6

例:

class Program
{
    static void Main(string[] args)
    {
        var myClass = Activator.CreateInstance(typeof(MyClass));
    }
}

public class MyClass
{
    internal MyClass()
    {
    }
}

例外:

System.MissingMethodException

このオブジェクトにはパラメーターなしのコンストラクターが定義されていません。

解決:

var myClass = Activator.CreateInstance(typeof(MyClass), nonPublic:true);

内部コンストラクターを使用してアセンブリ内にインスタンスを作成できない理由がわかりません。このコンストラクターは、実行アセンブリ内で使用できる必要があります。このアセンブリでは public のように機能するはずです。

4

2 に答える 2

18

それほど不可能ではありません。あなたはそれが公開されていないと言わなければなりません。

var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic
于 2013-10-08T06:55:30.120 に答える
0

MyClass 内のコンストラクターは Internal です public に変更しようとしています

public class MyClass
{
    public MyClass()
    {
    }
}

また

true を CreateInstance に渡す

var myClass = Activator.CreateInstance(typeof(MyClass),true );
于 2013-10-08T06:59:11.793 に答える