2
我正在構建一個庫,其中包含一系列方法,其中每個方法都有幾個重載,我試圖簡化它們。C# - 使用lambda指定非默認參數
許多方法都有循環過載選項。例如
AddString(string option1)
AddString(string option1, int option2)
AddString(string option1, int option2, bool option3)
AddArray(string option1)
AddArray(string option1, int option2)
AddArray(string option1, int option2, bool option3)
現在,我知道我可以指定那些作爲默認參數 - 具有指定默認值的參數。我不想這樣做,因爲我希望默認設置可以從項目配置到項目,甚至從調用者到調用者。
我也意識到,我可以建立一個Options
對象,它具有(配置)默認值,用戶可以通過這方面的一個實例到另一個超載,像這樣
var options = new Options();
options.OptionProperty1 = "A new string";
AddString(options);
但我寧願是有含有默認爲所有參數靜態Options
對象,莫名其妙只指定在一個內嵌調用的變化,像這樣
AddString(options => options.Set(
OptionProperty1 = "A string",
OptionProperty2 = 1,
OptionProperty3 = true
));
這是可能的,並如果是的話那麼方法簽名會是什麼樣子?
我非常喜歡你的建議 - 但AddString方法簽名會是什麼樣子? – awj
@awj - 我已經添加了一個例子 – Sean
我也喜歡這種方法。如果你看看devexpress工具,他們採取的方法與此非常相似,並且工作得很好。 – Luke101