好了,所以可以說我有一個這樣的結構答:在C#中限制使用結構
Struct A{
private String _SomeText;
private int _SomeValue;
public A(String someText, int SomeValue) { /*.. set the initial values..*/ }
public String SomeText{ get { return _SomeText; } }
public int SomeValue{ get { return _SomeValue; } }
}
現在我希望能夠做的是返回結構A作爲方法的結果在ABC類,像:
Class ABC{
public A getStructA(){
//creation of Struct A
return a;
}
}
我不使用我的媒體庫(這將有結構A和ABC類和一些更多的東西)永遠能夠創建一個結構的一個實例,希望任何程序員
我想要創建它的唯一方法就是從getS返回tructA()方法。然後可以通過適當的獲得者來訪問這些值。
那麼有什麼辦法可以設置這樣的限制嗎?所以一個Structure不能在某個類之外被實例化?使用C#,.Net4.0。
感謝您的幫助。
---編輯:----
要添加一些細節上,爲什麼我試圖做到這一點:
- 我的ABC類有一些「身份」的人可以查詢。該狀態有2個字符串值,然後是一長串整數。
- 從來沒有必要由程序員創建一個「狀態」對象/實例,狀態只能由類的「getStatus()」函數返回。
- 我不想將這3個字段拆分爲不同的方法,以獲得它們我打電話給Windows API(p/invoke),它返回與所有3個字段相似的結構。
- 如果我確實打算把它拆分3種方法,而不是使用結構,我就不得不要麼緩存結果,每一個的這3種方法被調用時調用從Windows API的方法...
所以我可以做一個公共結構和程序員可以實例化它,如果他們想,這將是無用的,因爲將不會有方法可以接受它作爲參數。或者我可以通過這樣的方式來構建庫,即只要該方法返回,就可以獲得該結構(如果它使事情變得更容易,則將其更改爲類)。
否使用接口。 – SLaks
你不能讓構造函數爲'internal'或'private'嗎? **編輯:**通過查找[this](http://stackoverflow.com/a/535782/298754)回答我自己的問題。答案是:「是的,但它不會幫助。」 – Bobson
@丹尼爾這聽起來更像是一個設計問題。例如,如果您擔心用戶可能在調用某個方法時使用自己的'A',而不是您給出的方法,那麼您可能需要查看自己的設計,而不是使用結構。請你能解釋一下這個問題的背景嗎? –