重载显式CAST运算符

man*_*llt 5 .net c# proxy casting operator-overloading

我有这段代码:

public class Leg : ProxiestChild
{
    public virtual Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是:

var leg = new Leg(); // leg is not Leg, instead ProxiedLeg

var trueleg = (Leg)leg; // exception leg is a ProxiedLeg
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西

public class ProxiestChild
{
    // some method that overloads explicit CAST
    // where receiving the proxied object i returns the unproxied object
    // to be casted
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*rth 14

您可以使用转换运算符实现自定义类型转换,implicit或者explicit在此处详细说明:

http://msdn.microsoft.com/en-us/library/85w54y0a(v=VS.100).aspx

要小心这一点,为了便于阅读,看到一种类型神奇地投射到另一种类型通常会让人感到困惑 - 人们并不总是首先认为存在转换操作符.