![](/img/trans.png)
[英]How to declare a method parameter in c# as being of a concrete class and interface
[英]C# method parameter being a property of the class
首先,很抱歉,如果我将其张贴在错误的位置,我是新来的,并且不确定是否将其张贴在正确的位置。 好吧,我正在尝试构建通用的搜索方法,在该方法中,我将添加搜索参数以安装SQL查询并在数据库上执行它。 所有这些都使用C#。 我的目标是将与要搜索的字段相对应的参数作为该方法所在类的属性。例如:
public foo
{
public string CustomerCode { get; set; }
public string CustomerName { get; set; }
public void AddSearchParameter(???, EnumOperator Operator, object Value)
}
每当我想指定要添加到搜索中的参数时,我都希望它看起来像这样:
foo xxx = new foo();
xxx.AddSearchParameter(foo.CustomerCode, EnumOperator.Equal, txtCustomerCode.text);
我的问题是怎么做?
如果您尝试传递成员信息 (以便AddSearchParameter
可以检查MemberInfo
并编写合适的SQL),则需要使用字符串文字(即"CustomerCode"
)或表达式树。 后者比较丰富,但是涉及学习Expression<T>
API。 但从根本上说:
public void AddSearchParameter(Expression<Func<object>> expression, ...)
...
xxx.AddSearchParameter(() => foo.CustomerCode, ...)
但是,这不是.NET的重要领域。
如果我正在执行类似的操作,则可能会使foo
的Search()
方法检查各种this
属性中是否存在值,然后基于this
属性构建查询。
public List<Results> Search()
{
if (!String.IsNullOrEmpty(this.CustomerCode))
{
// add search value to query
}
// etc.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.