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

クラスがpublicinternalで、コンストラクターがpublicの場合、メソッドCreateInstanceにはpublicバインディングフラグがありません。

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 に答える