最近我一直在做一些編程,遇到了一個我在c#中發現奇怪的問題。 (至少對我來說)隱藏的構造函數在c#中不可能嵌套類?
public class Foo
{
//whatever
public class FooSpecificCollection : IList<Bar>
{
//implementation details
}
public FooSpecificCollection GetFoosStuff()
{
//return the collection
}
}
我想富的消費者能夠獲得到FooSpecificCollection參考,甚至在其上執行某些操作。也許甚至可以將它設置爲Foo的其他屬性,或者像這樣,但不能創建此類的實例。 (應該能夠安裝這個集合的唯一的類應該是Foo)
我的請求真的太牽強了嗎?我知道人們的方式更聰明的定義了c#但不應該有這樣的選項,父類可到目前爲止,創建一個嵌套類實例,但其他人卻不能。
我創建了一個解決方案,使一個抽象類,或提供接口,通過物業和實施具體的私有類,是不是其他任何地方。
這是處理這種情況的正確方法嗎?
可能重複:http://stackoverflow.com/questions/1664793/how-to-restrict-access-to-nested-class-member-to-enclosing-class – 2010-03-14 02:34:38
好奇:是否會有'Foo的多個實例,每個實例都有自己獨特的'FooSpecificCollection'? – BillW 2010-03-14 09:23:25
是的,就是這樣。假設每個客戶端都有一個Foo實例(它將在某個精確時間由工廠創建),Foo將爲其自身創建一個FooSpecificCollection。我可以訪問foo特定的集合,以便讓人們知道foo具有什麼內容,我讓它們玩這些項目,但是它們不應該能夠創建一個,因爲它沒什麼意義。在晚上,我想也許我儘量讓這個代碼太多的語義:) – luckyluke 2010-03-14 09:41:01