Reflectionを使用してPropertyInfo.SetValue()でプロパティ値を設定しています。問題のプロパティは文字列であり、値を取得するオブジェクトは実際にはGUIDです。私はGUIDからプロセス中の文字列に変換したいのですが、これを有効にする何らかの暗黙のキャストを定義する方法はありますか?現時点では私はエラーを取得しています:Reflectionを使用してGUIDを文字列に変換する
"Object of type 'System.Guid' cannot be converted to type 'System.String'."
は、私は型チェックを行うと、手動で必要に応じて変換することができると思いますが、舞台裏でそれを行うためのエレガントな方法がありますならば、それは好ましいことでしょう!
多くのありがとうございます。
編集:
propertyInfoInstance.SetValue(classInstance, objectWithValue, null)
場所: 私はこのように見えるように非常に多くの私のコードたいと私は本当にただGUIDの.ToString()メソッドを呼び出すことはできませんobjectWithValueはint/bool/string/GUIDです。これはGUID以外のすべてでうまく動作します(暗黙のキャストがあります)!あらかじめタイプチェックを行い、GUIDを文字列に変換するだけでも、 "良い方法があるはずです..."と感じるだけです。
残念ながら、これは正しいと私は思っています。鍵は、この場合暗黙のキャストを定義することは不可能であると思われるので、手動でこのケースを処理する必要があります。汚い! –