【发布时间】:2016-05-11 04:52:06
【问题描述】:
我只是重新参考之前的帖子,因为我无法完全解决问题。 C# convert string to class that has a constructor with string parameter
我有一个循环,我试图将给定的字符串转换为类类型并实例化它们。这些类具有带有字符串类型参数的构造函数,该参数是数据库的连接字符串。
到目前为止,似乎还可以。 ExampleClass1,ExampleClass2,ExampleClass3...
Type type = Type.GetType("ExampleClass1");
object instance = Activator.CreateInstance(type, "connection_string_param");
但是,当我尝试通过 instance.DoSomething() 访问类方法时,我收到一个错误 - 对象不包含 DoSomething 的定义......当我以常规方式实例化类时,我可以看到该类方法。 Arturo Menchaca 建议进行转换,感谢他早些时候的帮助,但如果类类型尚不知道,将“对象”类型转换为“特定类类型”将不起作用。如果我尝试(类型)实例,它不起作用...... 任何帮助表示赞赏。
【问题讨论】:
-
静态类型的全部意义在于编译器至少可以使用静态信息验证数据类型的正确性。显然,您在这里没有静态类型信息。那么编译器会验证什么呢? (它会发出什么?)另一方面,如果您想完全跳过类型检查并将重载决议委托给运行时类型,只需使用
dynamic而不是object。 -
很可能你只需要阅读一下接口是什么,然后为你的类实现一些接口。
-
感谢您的建议,我不能在这里使用接口方法或类层次结构,因为类类型是由实体框架生成的。