[英]C# casting object type to a class type that is not known yet
我只是重新引用了以前的文章,因為我無法完全解決問題。 C#將字符串轉換為具有帶有字符串參數的構造函數的類
我有一個循環,我試圖將給定的字符串轉換為類類型並實例化它們。 這些類的構造函數帶有字符串類型參數,該參數是數據庫的連接字符串。
至此似乎還可以。 ExampleClass1,ExampleClass2,ExampleClass3 ...
Type type = Type.GetType("ExampleClass1");
object instance = Activator.CreateInstance(type, "connection_string_param");
但是,當我嘗試通過instance.DoSomething()訪問類方法時,收到一個錯誤-對象不包含DoSomething的定義。...當我以常規方式實例化該類時,可以看到這些類方法。 Arturo Menchaca建議早些時候進行轉換,感謝他的幫助,但是如果尚不知道類類型,則將“對象”類型轉換為“特定類類型”將不起作用。 如果我嘗試使用(type)instance,則無法正常工作。感謝您的幫助。
未在object
定義DoSomething()
。 它在ExampleClass1
上定義,依此類推。
您可以使其成為dynamic
對象並直接調用它:
dynamic instance = Activator.CreateInstance(type, "connection_string_param");
instance.DoSomething();
或者,通過反射調用它:
object instance = Activator.CreateInstance(type, "connection_string_param");
instance.GetType().GetMethod("DoSomething").Invoke(instance, null);
但是,您應該重新考慮您的設計,因為這樣做不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.