是否有一种方法可以基于我在运行时知道类的名称这一事实来创建类的实例。基本上,我将类名放在字符串中。
当前回答
看看激活器。CreateInstance除外的方法。
其他回答
看看激活器。CreateInstance除外的方法。
我曾经成功地使用过这个方法:
System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(string className)
您需要将返回的对象强制转换为所需的对象类型。
要从解决方案中的另一个项目中创建类的实例,您可以获得由任何类的名称指示的程序集(例如BaseEntity)并创建一个新实例:
var newClass = System.Reflection.Assembly.GetAssembly(typeof(BaseEntity)).CreateInstance("MyProject.Entities.User");
ReportClass report = (ReportClass)Activator.CreateInstance(Type.GetType(reportClass));
你为什么要写这样的代码?如果你有一个'ReportClass'类可用,你可以直接实例化它,如下所示。
ReportClass report = new ReportClass();
代码ReportClass report = (ReportClass)Activator.CreateInstance(Type.GetType(ReportClass));当没有必要的类可用,但想动态实例化和或或调用方法时使用。
我的意思是,当你知道程序集,但在写代码时,你没有类ReportClass可用时,它是有用的。
也许我的问题应该更具体些。我实际上知道一个基类的字符串,所以解决它:
ReportClass report = (ReportClass)Activator.CreateInstance(Type.GetType(reportClass));
激活。CreateInstance类有各种方法以不同的方式实现相同的功能。我可以将它转换为一个对象,但上面的方法对我的情况最有用。
推荐文章
- Linq-to-Entities Join vs GroupJoin
- 为什么字符串类型的默认值是null而不是空字符串?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- AutoMapper:“忽略剩下的?”
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)
- 完全外部连接
- 如何使用。net 4运行时运行PowerShell ?
- 在foreach循环中编辑字典值
- 如何在xml文档中引用泛型类和方法