3

動的メソッドバインディングを実装するためにオーバーライドTryInvokeMemberする例を見ています。DynamicObjectサインは以下の通り

public virtual bool TryInvokeMember(
    InvokeMemberBinder binder,
    Object[] args,
    out Object result
)

明らかresultに、呼び出し元に結果を返すために使用されます。

TryInvokeMemberout パラメーターなしのオーバーロードがないためresult、このメソッドは void メソッドも処理する必要があると思います。その場合、何resultを設定するべきかについてのガイドラインはありますか?

DynamicObjectnull へのセットのデフォルトの実装でresultあり、それが私のデフォルトの選択でもありますが、例でこれについての言及を見つけることができませんでした。これに関するガイドラインはありますか?結果がどうなるかは重要ですか?

4

2 に答える 2

4

はい、この場合は null を使用してください。

以前にも同様の質問がいくつかありました: DynamicMetaObject.BindInvokeMember の結果として void メソッド呼び出しを表現するにはどうすればよいですか? これは IDynamicMetaObjectProvider に関するものですが、DynamicObject はその実装の 1 つにすぎません。まもなく、DLR は常に何かを返すようになります。void を返すことはできません。

MSDN ドキュメントについて何ができるか見ていきます。これに関するメモをDynamicObject.TryInvokeMemberに追加する場合があります。

于 2010-03-11T02:51:19.733 に答える
0

とにかく結果は無視されるので、それは問題ではないと思います...

于 2010-03-10T13:24:42.690 に答える