聽起來很愚蠢的想法,但我想知道是否有可能以某種方式。運行時更換/交換基類與另一個基類
是否有可能在運行時更改派生類的基類?當然,有很多ifs和buts以及爲什麼有人會這麼做,它的設計很糟糕以及所有這些問題。
讓所有人保持緘默(儘管他們可能是完全有效的),讓我們說,只是踢或顯示你的書呆子,是否可能在C#或任何語言的事情呢?
因此,像:
public class baseOriginal {
public string justAProperty;
}
public class baseSwapped {
public int sillyNumber;
}
public class derivedClass : baseOriginal {
public bool iAmDumb;
}
void Main() {
baseOriginal derived = new derivedClass();
Console.WriteLine(derived.justAProperty);
baseSwapped derivedSwapped = (??);
Console.WriteLine(derivedSwapped.sillyNumber);
}
現在,這是一些自修改的代碼! 「我是哺乳動物!」 「不,等等......我是爬行動物!」 「哦,現在我想成爲一隻鳥!」 – 2010-12-10 17:19:39
你應該考慮繼承的構成。 – 2010-12-10 17:47:53
目前還沒有真正的用例。即使我同意它完全不好的設計。我問這個問題的原因是因爲我聽到有人說出來,並聲稱他們已經做到了(可能用C++)。即使我非常認爲他是個出色的傢伙,他也無法相信他。我已經嘗試了很多東西,並且在將其視爲「不可能」之前,希望得到社區的意見。 DLR的想法似乎很有趣。將在週末做一些挖掘工作,看看能否做些什麼。 – Mrchief 2010-12-10 20:03:29