0

次のように定義されたメソッドがあるとします。

public T InvokeMethod<T>(string serviceName, string methodName, params object[] args)

次のように Type オブジェクトで呼び出したいとしますが、機能しません。

int i = 100;
Type x = i.GetType();
invoker.InvokeMethod<x>(method.Item1, method.Item2, null);

次のように実際に型を指定することでこのメソッドを呼び出せることはわかっていますが、動的にしたいのです。

invoker.InvokeMethod<int>(method.Item1, method.Item2, null);

どうすればこれを達成できますか?

4

2 に答える 2

1

x はジェネリック クラスで使用できる型ではないため、 x は type のインスタンスですType。これは実行時に計算されます。ジェネリック クラスには、コンパイル時に計算されるクラス名が必要です。これは、この回答でよりよく説明されています。

https://stackoverflow.com/a/7120375/

基本的に、x はクラスのインスタンスですが、 では、invoker.InvokeMethod<int>クラスintの名前です。

于 2013-01-30T14:43:34.220 に答える
0

おそらく私の答えが気に入らないことはわかっていますが、WCF でジェネリックを使用する意味はあまりありません。すべてのコントラクトは WSDL に変換可能でなければならないため、KnownTypeとにかく属性を使用する必要があるからです。

于 2013-01-30T14:42:10.667 に答える