根据类的名称在同一程序集中创建内部类的实例
本文关键字:程序集 程序 集中 创建 内部类 实例 | 更新日期: 2023-09-27 17:59:38
我正在尝试创建与调用类位于同一程序集中的内部类的实例。不幸的是,这对我不起作用。我使用以下代码片段:
Assembly businessAssembly = this.GetType().Assembly;
var concreteValidator = businessAssembly.CreateInstance(t.NotificationType.ValidatorClassName, true,
BindingFlags.Default | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.NonPublic,
null,
new Object[] { t },
null,
null);
注意,t.NotificationType.ValidatorClassName
的形式为Namespace.ClassName
。这不应该完成任务吗?我哪里错了?
如果类是public内部的并且构造函数是公共的,则CreateInstance
方法缺少公共绑定标志:
BindingFlags.Public
这将变成:
Assembly businessAssembly = this.GetType().Assembly;
var concreteValidator = businessAssembly.CreateInstance(t.NotificationType.ValidatorClassName, true,
BindingFlags.Default | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
null,
new Object[] { t },
null,
null);