我有一个简单的HttpsGet函数,需要约20个可选参数。
现在,我正在考虑使每个参数都是可选的,并让用户创建一个将与该函数一起使用的自定义Options对象。不可能创建200个重载。
使该功能对其他用户可读并易于使用的最佳方法是什么?我是否缺少其他解决方案?
为了便于阅读,这是代码的简化版本。
static List<Assignments> GetAllAssignments([Optional] string levels, [Optional] string passed, [Optional] stringresurrected)
{
var json = Get($"assignments?{levels}&{passed}&{resurrected}");
var assignments = JsonConvert.DeserializeObject<CollectionResponse<Assignments>>(json).Data;
return assignments;
}
最佳答案
通常最好是传递一个“选项对象”而不是单个值。否则,调用者很容易传递错误的值。
static List<LevelProgression> GetLevelProgressions(LevelProgressionOptions options)
{
}
选项可能看起来像这样
public class LevelProgressionOptions
{
public LevelProgressionOptions()
{
// Set any default values
SomeProperty = 1;
}
public int SomeProperty { get; set; }
public string AnotherOption { get; set; }
// other values omitted
}