13

Activator クラスを使用して、そうでなければ循環参照 (依存性注入) を作成するアセンブリ内のリソースにアクセスするという考えを投げかけています。以前に参照が必要なバニラ クラスでそれを行ったことがありますが、私の質問は、Activator を使用して静的クラスにアクセスできますか?

私をつまずかせているのは、Activator がオブジェクトのインスタンスを返すのに対し、静的クラスにはインスタンスがないことです。これは可能ですか?

4

5 に答える 5

24

メソッドを呼び出すためにアクティベーターは必要ありません。MethodInfo.Invokeを直接使用します。最初のパラメーターは null のままにすることができます。

于 2009-03-05T14:04:41.993 に答える
7

MethodInfo.Invoke を使用したもう 1 つの例

Type myStaticClassType = Type.GetType("MyStaticClassNameSpace",true);
object[] myStaticMethodArguments = {object1,object2...};
MethodInfo myStaticMethodInfo = myStaticClassType.GetMethod("YourMethod");
var myStaticMethodResult = myStaticMethodInfo.Invoke(null,myStaticMethodArguments);
于 2015-02-19T16:10:03.167 に答える
0

静的クラスにインスタンスがないわけではなく、パブリック コンストラクターがないだけです。Activator はリフレクションを使用してインスタンスを作成します。リフレクションを使用すると、プライベート コンストラクターであっても、必要なものを呼び出すことができます。

于 2009-03-05T14:05:50.120 に答える