Ich stoße auf ein generisches Problem, während ich an einem generischen Dependency-Injection-Handler (einem Basis-Service-Locator) arbeite.Wie können Sie T in eine Klasse umwandeln, die einer "Where T: class" -Beschränkung entspricht?
Edit 1 (für Klarheit)
Okay, so tatsächlich SimpleInjector als DI-Resolver ich bin und es hat die Klasse Einschränkung auf es ist GetInstance Methode, ist so hier einige komplettere Code:
public T GetInstance<T>() where T : class
{
try
{
// works
return _container.GetInstance<T>();
}
catch(ActivationException aEx)
{
return default(T);
}
}
public T GetInstance<T>()
{
try
{
if(typeof(T).IsClass)
{
// does not work, T is not a reference type
return _container.GetInstance<T>();
}
}
catch(ActivationException aEx)
{
return default(T);
}
}
Edit 2 - endgültiger Code, da es in den Kommentaren seltsam aussieht:
public T GetInstance<T>()
{
try
{
if(typeof(T).IsClass)
{
return (T) _container.GetInstance(typeof(T));
}
}
catch(ActivationException aEx)
{
return default(T);
}
}
Vielleicht, wenn wir mehr über wussten, warum Sie daran interessiert sind diese dabei, abgesehen von einer Rückkehr null Beispiel ...? Könnte ein besserer Weg sein, es zu strukturieren. –
Bitte beachten Sie Edit 1 für, warum ich dies tun möchte. – Laurence