【发布时间】:2018-07-03 17:46:02
【问题描述】:
我有一个带有 10 多个可选参数的函数,并且我的程序中有设置来确定是否应该传递参数。例如,
public void MyFunction(bool? b1=null, bool? b2=null, bool? b3=null.. bool? b10=null)
以下是指示是否应设置参数的设置
bool setb1 = false;
bool setb2 = false;
bool setb3 = true;
bool setb4 = false;
bool setb5 = true;
如果我要按照设置来设置参数,那么我将不得不这样做
if (!setb1 && !setb2 && !setb4)
MyFunction(b3: value3, b5: value5);
如果我有 10 个设置和 10 个参数,那么我的组合会太多,所以我认为我的实现不可行。实现此目的的正确方法是什么?
【问题讨论】:
-
10多个可选参数?您最好将方法参数捆绑为结构/类中的属性/字段。所以用户可以设置他想要/需要的任何属性......
-
删除所有那些丑陋的可选参数并改用一个类,它将包含这些参数作为属性。
-
使用字典甚至一个简单的数组来代替这个(丑陋的)技术。
-
如果你不能改变你的方法签名,唯一的办法就是通过反射。如果您可以更改方法签名,请按照其他人的建议使用不同的数据模型。
-
看来你应该尝试使用command design pattern。
标签: c# optional-parameters long-parameter-list