我有一個接口/抽象類,其中的實現可以支持任意大小的字典Name
,identifier
。 identifier
每個實現將具有不同的格式,這是特定於實現的。在C#中接受多種選擇的API設計?
調用者需要從提供者檢索Name
的列表,並使用這些來詢問用戶他關心的內容。用戶可以選擇一個或多個。
我考慮了以下設計,其中調用者獲取一個名稱數組,並通過傳入一個int整數來設置用戶的選擇,標識用戶選擇的名稱的數組索引。
public abstract String[] GetNames();
public abstract void SetNamesToUse(int[] names);
不滿意這點,我也算是一個模型,其中的對象列表將被傳來傳:
public class NameObject {
public bool SelectedByUser;
public String Name;
private String ProviderSpecificData;
}
...
public abstract List<NameObject> GetNames();
public abstract void SetNamesToUse(List<NameObject> names);
這似乎更清潔,更容易對調用者。
我還有其他選擇嗎?你是如何解決類似的?
@IanMercer我的想法是供應商需要保持反正這個列表,而且我也可以包括在它的選擇。您的建議使用HastSet是一個很好的建議;我會考慮的。謝謝。 – tig