我有一個C#基類,我是關聯信息與每類型(而不是每個實例)的基礎上。基本上,我希望所有的子類都提供一個表示類型的Icon和FriendlyName。我想不是必須創建一個類型實例來獲取這些信息,我想要求所有的子類都提供這些信息。理想情況下,它將在基礎派生的界面中。提供繼承的靜態屬性(概念上)
我試着使用一個類屬性,但它需要一個常量值,所以雖然我可以設置FriendlyName,但我無法設置圖標,也無法看到一種方法來使屬性成爲必需,所以兒童班可以逃脫不了(直到跑步時間)。
我在孩子可以隱藏的基礎上添加了一個靜態屬性,但這有點醜陋,基底中的值真的很荒謬。它不知道孩子的名字是什麼。我可以在該屬性中進行基本投擲,但同樣,在運行時間之前不會被捕獲。
任何人對我如何實現這樣的東西有任何想法?有沒有我失蹤的模式?任何開箱即用的想法都會受到鼓勵。
編輯:真的,我需要能夠沿繼承樹請求類屬性,並且能夠使用嵌入式資源來設置這些屬性。所有將要返回的信息都是靜態的,並且在編譯時已知。我無法想出一個很好的揭示它的方法。
編輯2:這裏是什麼,我需要更具體的例子:
假設我有一個基類:
abstract class Vehicle { ... }
然後我有兩個孩子:
class Car : Vehicle { ... }
class Truck : Vehicle { ... }
我希望能夠獲得代表「Car」或「Truck」的圖標,而無需創建一個(la Car.Icon)的實例,因爲所有車輛一個給定的類型都將具有相同的圖標。
我也希望確保所有車輛派生的類型公開相同的方式來獲得該圖標,以防有人在未來走來,並增加了一類新的
class Airplane : Vehicle { ... }
編輯3:爲什麼我需要這個?那麼我們有一個可以插入插件的應用程序。插件由類型定義,當類型被加載時,我們向用戶顯示圖標和名稱。當他們點擊圖標時,它會創建該類型的實例(併爲它們提供一個命名實例的對話框等)。我不需要或不想創建一個類型的實例來獲取圖標。
是的,這是我走的路線,但我只是覺得很髒。不得不創建一個實例來獲取信息會增加如何使用信息的複雜性。 – ctacke 2009-01-07 21:54:46