如何使用较少的方法参数

Ara*_*ash 0 c# methods arguments

我在这个方法中根据这些参数在表中搜索我的数据.

public List<Product_tbl> GET_Product(int? ProductID = null, string Name= null, bool? MakeFlag= null, string Color= null)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

我知道我应该尽可能少地争论方法,所以有什么方法可以编写我的代码清理并使用较少的参数来处理这种方法.

DLe*_*Leh 5

将参数包装在类中.

public class ProductArgs
{
    public int? ProductID { get; set; }
    public string Name { get; set; }
    public string Color { get; set; }
    public bool? MakeFlag { get; set; }
}

public List GET_Product(ProductArgs p){ ... }
Run Code Online (Sandbox Code Playgroud)

正如评论所暗示的那样,你不应该为了"干净"的代码而努力减少参数.除非该类构造在您的应用程序中有其他用途,否则不应该使用这样的类来仅用于表示单个方法调用中的参数.不要害怕在方法调用中有4个参数,没有什么必须"不洁"的.

  • @Servy我实际上认为这解决了用户所说的"问题",但是要讨论它是否真的*是一个问题.我不得不承认,'MakeFlag`可能不应该出现在`ProductArgs`中,但那只是我的插曲.我认为它应该从`ProductArgs`中省略并放回方法的args中. (3认同)
  • 它代表了方法的参数,这正是它试图表达的内容.那个男人要求一种方法来减少那些args,你去了.我同意你不应该这样做,除非你计划重复使用这个课程,但我只是回答他的问题. (2认同)