Activator クラスを使用して、そうでなければ循環参照 (依存性注入) を作成するアセンブリ内のリソースにアクセスするという考えを投げかけています。以前に参照が必要なバニラ クラスでそれを行ったことがありますが、私の質問は、Activator を使用して静的クラスにアクセスできますか?
私をつまずかせているのは、Activator がオブジェクトのインスタンスを返すのに対し、静的クラスにはインスタンスがないことです。これは可能ですか?
Activator クラスを使用して、そうでなければ循環参照 (依存性注入) を作成するアセンブリ内のリソースにアクセスするという考えを投げかけています。以前に参照が必要なバニラ クラスでそれを行ったことがありますが、私の質問は、Activator を使用して静的クラスにアクセスできますか?
私をつまずかせているのは、Activator がオブジェクトのインスタンスを返すのに対し、静的クラスにはインスタンスがないことです。これは可能ですか?
メソッドを呼び出すためにアクティベーターは必要ありません。MethodInfo.Invokeを直接使用します。最初のパラメーターは null のままにすることができます。
MethodInfo.Invoke を使用したもう 1 つの例
Type myStaticClassType = Type.GetType("MyStaticClassNameSpace",true);
object[] myStaticMethodArguments = {object1,object2...};
MethodInfo myStaticMethodInfo = myStaticClassType.GetMethod("YourMethod");
var myStaticMethodResult = myStaticMethodInfo.Invoke(null,myStaticMethodArguments);
静的クラスにインスタンスがないわけではなく、パブリック コンストラクターがないだけです。Activator はリフレクションを使用してインスタンスを作成します。リフレクションを使用すると、プライベート コンストラクターであっても、必要なものを呼び出すことができます。