2012-02-23 21 views
6

System.Activator.CreateInstance nedir ve ne zaman kullanmalıyım?System.Activator.CreateInstance nedir?

+2

Genellikle bu sınıf, .NET yansımasını (geç bağlama gibi) kullanırken, bu makaleyi ne zaman kullanacağınızı öğrenmek için okuyabilirsiniz, http://www.codeproject.com/Articles/55710/ Yansıma-in-NET –

cevap

18

Yalnızca çalışma zamanında türü bilinen bir nesnenin örneğini oluşturmanıza olanak tanır. Öyleyse bir sınıfın

public class MyClass 
{ 
    public void SomeMethod() 
    { 

    } 
} 

olduğunu varsayalım ve bunun bir örneğini oluşturmak istediniz.

MyClass instance = new MyClass(); 

ama gördüğünüz gibi bu tip derleme zamanında bilinmesi gerektiği anlamına gelir: standart yol bu yapmaktır. Eğer kullanıcılarınızın bazı metin kutularında sınıfın adını girmesini istiyorsanız. Bu durumda Activator.CreateInstance kullanabilirsiniz:

// this could come from anywhere and it's known only at runtime 
string someType = "MyClass"; 
object instance = Activator.CreateInstance(Type.GetType(someType)); 

dezavantajı gerçek tip derleme zamanında bilinmemektedir beri Activator.CreateInstance ile oluşturulan örneklerini işlemek amacıyla use reflection zorunda kalacak olmasıdır.

+1

Benzer olarak Objective-C NSClassFromString benzer? – user523234

+1

Teşekkürler, bu gerçekten yararlı bir örnektir :) – Lev