C#方法参数是类的属性

时间:2013-11-06 13:14:27

标签: c#

首先,如果我把它发布在错误的地方,我很抱歉,我是新来的,我不确定我是否在正确的位置发布。 好吧,我正在尝试构建一个通用的搜索方法,我将添加搜索参数来挂载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);

我的问题是如何做到这一点?

2 个答案:

答案 0 :(得分:3)

如果您尝试传递成员信息(以便AddSearchParameter可以检查MemberInfo并编写合适的SQL),那么您需要使用其中一个字符串文字(即"CustomerCode")或表达式树。后者更丰富,但涉及学习Expression<T> API。但从根本上说:

public void AddSearchParameter(Expression<Func<object>> expression, ...)
...
xxx.AddSearchParameter(() => foo.CustomerCode, ...)

然而,这不是.NET的一个微不足道的领域。

答案 1 :(得分:1)

如果我正在做这样的事情,我可能会在Search()上使用foo方法检查各种this属性中是否存在值,然后构建基于查询的查询在那。

public List<Results> Search()
{
    if (!String.IsNullOrEmpty(this.CustomerCode))
    {
        // add search value to query
    }

    // etc.
}