1

我正在尝试创建与调用类在同一程序集中的内部类的实例。不幸的是,这对我不起作用。我正在使用以下代码片段:

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。那不应该做这项工作吗?我哪里做错了?

4

1 回答 1

0

如果类是内部公共的并且构造函数是公共的,则该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);
于 2013-02-14T18:21:44.380 回答