質問: x + x"); ``` 実行すると、以下の例外が発生します。 > System.Linq.Dynamic.ParseExceptionは、ユーザーコードによって処理されませんでしたメッセージ=演算子 '+'は、オペランドタイプ 'Vector2'および 'Vector2'と互換性がありませんソース= DynamicLINQ位置= 6 > > パーサーに`Vector2`タイプの`+`演算子オーバーロードを「表示」させるにはどうすればよいですか? 編集: `=`演算子でも同じ問題が発生します。 ソースを見ると、理由がわかります。単純な型について、メソッドのロードをリストする特別なインターフェースを調べ、見つからない場合は例外を発生させます。問題は、私のタイプ( `Vector2` )がそのリストにないため、演算子メソッドが見つからないことです。
回答: DynamicLinqライブラリを使用して、 `System.Linq.Dynamic.ExpressionParser`にある署名インターフェイスの1つに署名を追加する必要があります。認識した操作のみを解析します。 それは`ExpressionParser`すべてのプライベートインターフェイスを調べるようです。 `ExpressionParser`内にインターフェイスを追加するだけで、エラーが抑制されるようです。 ``` interface ICustomSignatures { void F(Microsoft.Xna.Framework.Vector2 x, Microsoft.Xna.Framework.Vector2 y); } ``` 安全のために(そして意図したパターンに適合する可能性があるため)、 `IAddSignatures`インターフェイスに追加/拡張する方が安全な場合があります。 ``` interface ICustomSignatures : IAddSignatures { void F(Microsoft.Xna.Framework.Vector2 x, Microsoft.Xna.Framework.Vector2 y); } ```