我有一个伪装成 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 类型(即使所有赋值运算符都在那里)。对此有任何解决方法的想法,我确定我一定错过了一些愚蠢的东西吗?