2012-05-24 44 views
1

我有這樣反思,動態。如何用另一個對象替換一個對象?

public class Simple 
{ 
    public string Value 
    { 
     get { return GetProperty(); } 
    } 

    // different methods, fields, events, etc. 
} 

可能的對象具有相同的對象來代替類簡單的實例,但與二傳?

如何實現......

private object Substitution(object simple) 
{ 
    object newSimple; 

    // implementations 

    newSimple.Value = "data"; 
    return newSimple; 
} 

爲有這樣的事情

public class Simple 
{ 
    public string Value { get; set; } 

    // my methods, fields, events ... 
} 

我想創建一個類,並繼承SYSTEMOBJECT,那麼你就可以創建不同的動態特性,但可以不做:(

或者也許嘗試從這個對象繼承(如何?)並覆蓋屬性?

謝謝

+1

是什麼在這裏你的目標? –

回答

0

您不能在運行時更改加載類型的定義或結構。

您可能會創建一個新類型,它具有類似的一組屬性和字段,並添加了屬性設置器。然而,在大多數情況下,這將會被限制使用,因爲現有的代碼不會理解新的類型(因爲它是運行時生成的),所以仍然會使用現有的類型,這是不兼容的。通常,如果需要運行時類型內的運行時擴展性,還可以使用其他選項,包括使用Dictionary<T,U>dynamicExpandoObject或其他一些機制來在編譯時未知的類中存儲「額外」信息。

0

你總是使用一個接口,它只定義一個屬性getter。那麼在實現中有一個屬性setter?

class Program 
{ 
    static void Main(string[] args) 
    { 
     IMyClass myA = new ClassA{ Property = "Class A" }; 

     Console.WriteLine(myA.Property); 

     // can't do this 
     // myA.Property = "New Property"; 

     // can do this 
     (myA as ClassA).Property = "New Property"; 
     Console.WriteLine(myA.Property); 
    } 
} 

interface IMyClass 
{ 
    string Property { get; } 
} 

class ClassA : IMyClass 
{ 
    public string Property { get; set; } 
} 

如果做不到這一點,你可以做定義使用明確的關鍵字轉換的用戶,more info at MSDN

相關問題