我現在有這種類型的代碼:C#:鑄造類型的動態
private void FillObject(Object MainObject, Foo Arg1, Bar Arg2)
{
if (MainObject is SomeClassType1)
{
SomeClassType1 HelpObject = (SomeClassType1)MainObject;
HelpObject.Property1 = Arg1;
HelpObject.Property2 = Arg2;
}
else if (MainObject is SomeClassType2)
{
SomeClassType2 HelpObject = (SomeClassType2)MainObject;
HelpObject.Property1 = Arg1;
HelpObject.Property2 = Arg2;
}
}
假設SomeClassType1和SomeClassType2具有相同的組,我要分配(儘管它們可能在其他的不同)的特性,是有可能動態地將MainObject轉換爲適當的類型,然後賦值,而不重複代碼? 這是我想看看到底是什麼:
private void FillObject(Object MainObject, Foo Arg1, Bar Arg2)
{
Type DynamicType = null;
if (MainObject is SomeClassType1)
{
DynamicType = typeof(SomeClassType1);
}
else if (MainObject is SomeClassType2)
{
DynamicType = typeof(SomeClassType2);
}
DynamicType HelpObject = (DynamicType)MainObject;
HelpObject.Property1 = Arg1;
HelpObject.Property2 = Arg2;
}
很顯然C#抱怨不能夠找到DynamicType:
類型或命名空間名稱「DynamicType」找不到(您是否缺少使用指令或程序集引用?)
在C#2.0中可能會這樣嗎?如果它比我現在的代碼更混亂,比我認爲這樣做沒有意義,但我很有興趣瞭解。謝謝!
編輯:只是爲了澄清,我完全理解,實現一個接口是最合適的,可能是正確的解決方案。也就是說,我更感興趣的是如何在沒有實現接口的情況下做到這一點。感謝您的好評!
我認爲這裏的泛型更合適,但至少我會檢查以確保屬性存在第一。 – 2009-02-19 18:25:47
我只是想展示你用反射的方式。對於這個問題,這不是*完整*或*推薦*方法。 – 2009-02-19 18:28:04
我覺得這個災難已經寫滿了...... – 2009-02-19 18:29:45