C# Yeni T Create()
Çalıştığım görebilirsiniz (ama başarısız) aşağıdaki kod ile yapmak için:
protected T GetObject()
{
return new T();
}
Herhangi bir yardım büyük mutluluk duyacağız.
DÜZENLEME:
İçeriği aşağıdaki gibi oldu. Etrafında standart metotlar ile tüm denetleyicileri için özel bir denetleyici bir sınıf türetmek için oynuyordum. Bu yüzden bağlamda, kumanda türünde yeni bir nesne örneği oluşturmak için gerekli. Yazma zamanda, gibi bir şey oldu:
public class GenericController<T> : Controller
{
...
protected T GetObject()
{
return (T)Activator.CreateInstance(ObjectType);
}
public ActionResult Create()
{
var obj = GetObject()
return View(obj);
}
Ve yansıma çok kolay burada olduğuna karar verdim. Kesinlikle sorunun ifadeye bakılırsa, en uygun olarak doğru cevabı işaretlemek için bir yeni kullanan katılıyorum() kısıtlaması. Bu kadar toparlayabildim.
Şerefe!
Tim.
CEVAP
new Constraint bir göz atın
public class MyClass<T> where T : new()
{
protected T GetObject()
{
return new T();
}
}
T
varsayılan yapıcı olmayan bir sınıf olabilir: bu durumda new T()
geçersiz bir ifade olurdu. new()
kısıtlama T
new T()
yasal kılan bir varsayılan kurucu olması gerektiğini söylüyor.
Genel bir yöntem için aynı kısıtlama uygulayabilirsiniz:
public static T GetObject<T>() where T : new()
{
return new T();
}
[DÜZENLE]
Eğer parametreleri vermek gerekirse:
protected T GetObject(params object[] args)
{
return (T)Activator.CreateInstance(typeof(T), args);
}
Bir etiket, yeni bir şube oluşturmak i...
emacs ido etkin ile yeni dosya oluştur...
Raylar 3: Nasıl iç içe geçmiş yeni bir...
Neden açıkça yeni bir şube itmek gerek...
Nasıl platform bağımlı bir yeni satır ...