假設我有一個下面的代碼:嘗試通過反射來獲取文字
Container.cs
public class Container
{
public readonly string IdType;
public Container(string aIdType)
{
IdType = aIdType;
}
}
SuperContainerA的.cs
public class SuperContainerA : Container
{
public SuperContainerA(/*x parameters*/) : base("A") {}
}
SuperCont ainerB.cs
public class SuperContainerB : Container
{
public SuperContainerB( /*y parameters*/) : base("B") {}
}
SuperContainerToTheInfinityAndBeyond.cs
public class SuperContainerB : Container
{
public SuperContainerB( /*y parameters*/) : base("It's Over 9000!") {}
}
此基礎上,我想要檢索的是「A」和「B」它們正從構造函數發送到TypeId。
這裏的問題是......我需要在程序初始化期間檢索這些值,然後創建這些類的實例,所以我認爲在這裏使用反射是我最好的選擇。 (注意:如果每個構造函數的參數個數是相同的,創建類的實例將是有效的,但它們可以改變。:()
是否可以使用反射來檢查(如果我能看到類似於源代碼的東西,那麼我可以使用正則表達式來獲取它的值)。(注意:包括源代碼爲資源文件對我的程序不是一個選項:P)
我想聲明常數持有的價值和力上那麼命名規則,這樣我就可以使用反射後搶回來,然後如此。 mething像...
public class SuperContainerA
{
public const string ctIdType = "A";
}
public class SuperContainerB
{
public const string ctIdType = "B";
}
...但我不知道這是否是對這個問題的最好方法,因爲我不會有什麼幫我查一下,如果這些consts已經宣佈,如果他們在編譯期間得到了正確的名字。其實,如果語言有某種靜態繼承,這在這種情況下會有很大的幫助,但是我聽到一些程序員抱怨說,靜態繼承更像是一種頭痛,而不是一種治療。
無論如何,我正在尋找替代品。任何想法是受歡迎的。
你究竟想要做什麼?在創建對象之前從瞭解這些值中獲得什麼好處? – cadrell0 2012-01-10 13:51:52