sınıf
public static IMobileAdapter CreateAdapter(Type AdapterType)
{
return (IMobileAdapter)System.Activator.CreateInstance(AdapterType);
}
O IMobileAdapter uygulayan bir sınıfın örneğini döndürüyor, ancak bir dize ile eşit kolayca kullanabilirsiniz kadar yeni:
public static IMyClassInterface CreateClass(string MyClassType)
{
return (IMyClassInterface)System.Activator.CreateInstance(Type.GetType(MyClassType));
}
Çağrı onu aşağıdakine benzer bir kod kullanarak: cours Of
IMyClassInterface myInst = CreateClass("MyNamespace.MyClass, MyAssembly");
e, yarattığı sınıf bu durumda IMyClassInterface arabirimini uygulamalıdır, ancak bir sınıf fabrikasıyla, muhtemelen tüm sınıflarınız aynı arabirimi uygular.
Düzenleme: Yorumunuza istinaden
, bu tartışmanın amacı için, sizin vb/cs proje içinde dosyaların kümesi olarak dönem "montaj" düşünüyorum. Bunu tek bir projede [derleme] yaptığınızı ve birden fazla projeye yayılmadığınızı varsayıyorum.
Sınıflarınız Form nesnesini genişletirken sizin durumunuzda böyle bir şey yaparsınız.
Form myInst = CreateClass("MyExtendedForm");
Ya da CreateClass yöntemi içinde ya da dışında türünü olsun olmadığına bağlı
Form myInst = CreateClass(Type.GetType("MyExtendedForm"));
. Herhangi bir özel üyeye erişmek için örneğinizi doğru türe atamanız gerekir. Bunu düşünün:
class MyCustomForm : Form
{
public int myCustomField{ get; set; }
}
Formumun myCustomField özelliğini ekleyen bir özel formum var. I) (bu kullanarak Activator.CreateInstance örneğini istiyorum:
public static Form CreateClass(string InstanceName)
{
return (Form)System.Activator.CreateInstance(Type.GetType(InstanceName));
}
Sonra kullanarak çağrı:
Form myInst = CreateClass("MyCustomForm");
Şimdi ben özel form myinst sakladığınız. Ancak, özel mülkiyet [myCustomField] erişmek için, doğru forma senin örneğini döküm gerekir:
int someVal = ((Type.GetType("MyCustomForm"))myInst).myCustomField;
Tüm sınıflar Formu uzanır. Bir montajın ne olduğunu açıklamak ister misiniz? – Malfist