Bir jenerik sorunu çalıştırıyorum. bu yüzden aslında bir DI Resolver olarak SimpleInjector kullanıyorum ve üzerinde sınıf kısıtlaması vardırT'yi "T: class" kısıtlamasıyla eşleştirmek için bir sınıfa nasıl yazabilirsiniz? genel Bağımlılık Enjeksiyon işleyicisi (bir taban Servis Bulucu) üzerinde çalışırken
Okay (netlik için)
Düzenleme 1, işte GetInstance yöntemidir biraz daha komple bir koddur:
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);
}
}
Düzenleme 2 - bu yorumlarda tuhaf görünüyor beri nihai kodu:
public T GetInstance<T>()
{
try
{
if(typeof(T).IsClass)
{
return (T) _container.GetInstance(typeof(T));
}
}
catch(ActivationException aEx)
{
return default(T);
}
}
biz dönen boş örnek dışında, bunu yapmaya ilgilenen nedeni hakkında daha fazla biliyordu Belki eğer ...? Yapılandırmak için daha iyi bir yol olabilir. –
Lütfen neden bunu yapmak istediğimi 1'e bakın. – Laurence