簡體   English   中英

C#將對象類型轉換為未知的類類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM