0
比方說,我有下面的類:我可以將DynamicObject或ExpandoObject轉換爲特定類型嗎?
class Person
{
public String Name { get; set; }
public String Address { get; set; }
}
然後我創建了一個動態對象,就像這樣:
dynamic person = new ExpandoObject();
person.Name = "Henrik";
person.Address = "Home";
person.Age = 100;
現在,是有可能在任何(最好是簡單)的方式來轉換創建對象到Person類(的子類)的對象中?這樣做不起作用:
var p = (Person)person;
因爲以任何方式人物對象是沒有關係的類Person,它只是碰巧包含Person類的所有屬性。但是,是否可以通過簡單而通用的方式進行轉換?理想情況下,我希望能夠將我的person對象轉換爲Person的子類,除了(在本例中)新屬性「Age」之外,它還包含(顯然)Person的所有屬性。
雖然這並不直接回答您的題目,但可以爲Person創建一個構造器,將一個動態對象作爲參數並讀取您想要的屬性。 'public Person(dynamic myDynamicObject){this.Name = myDynamicObject.Name; }' – Flater
問題代碼與* inheritance *無關。您正試圖*顯式將一個動態對象轉換爲特定的類型。當存在繼承關係或存在明確的轉換運算符時,這可以被允許。 –