2012-01-09 65 views
1

我有這樣一段代碼:重載顯式類型轉換操作符

public class Leg : ProxiestChild 
{ 
    public virtual Name { get; set; } 
} 

的問題是:

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

var trueleg = (Leg)leg; // exception leg is a ProxiedLeg 

我需要像這樣

public class ProxiestChild 
{ 
    // some method that overloads explicit CAST 
    // where receiving the proxied object i returns the unproxied object 
    // to be casted 
} 
+2

這可能有所幫助:http://msdn.microsoft.com/en-us/library/85w54y0a(v=VS.100).aspx – 2012-01-09 17:10:25

+9

你的代碼不清楚,因爲它*會*創建一個' Leg'。你能否展示一個簡短但完整的程序,它實際上證明了這個問題 - 並且給我們更多的背景知道你爲什麼要這樣做? – 2012-01-09 17:11:13

+0

@Adam Houldsworth就是我所需要的(非常酷的鏈接),謝謝,你能讓你的答案評分嗎? – manuellt 2012-01-12 08:24:42

回答

10

您可以實現自定義類型轉換使用轉換運算符implicitexplicit詳述如下:

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

要格外小心,這一點,可讀性,它往往是混亂看到一個神奇的類型強制轉換爲另 - 人並不總是先想到有在遊戲轉換操作符。