int のふりをするクラスがあるため、さまざまな演算子がオーバーロードされています。
public class MyId
{
int value;
public virtual int Value
{
get { return this.value; }
set { this.value = value; }
}
public MyId(int value)
{
this.value = value;
}
public static implicit operator MyId(int rhs)
{
return new MyId(rhs);
}
public static implicit operator int(MyId rhs)
{
return rhs.Value;
}
}
ただし、次のようなコードを使用すると
PropertyInfo.SetValue(myObj, 13, null)
OR
MyId myId = 13;
int x = Convert.ToInt32(myId);
IConvertible iConvertible = x as IConvertible;
iConvertible.ToType(typeof(MyId), CultureInfo.CurrentCulture);
無効なキャストを取得します。私は困惑しています.両方の呼び出しはintでconvertを呼び出そうとしているようですが、intは型MyIdを理解していないため失敗します(すべての代入演算子があります)。これに対する回避策のアイデアはありますか?