如果类中没有属性,则返回空

时间:2017-07-20 12:00:42

标签: c# asp.net reflection func

我有一个从集合中搜索的谓词,我想检查我的类属性是否不在对象中然后我想返回空,即#34;"不是空的。

 Func<IModel, string> predicateField03 = s => s.GetType().GetProperty("Field03") != null && s.Field03.ToLower().Contains(filter.ToLower()) ? s.Field03.ToLower() : string.Empty;

以上查询在对象中返回为 Field03 = null ,但我希望结果如 Field03 =&#34;&#34; 如果我做错了,请更正。

1 个答案:

答案 0 :(得分:0)

我认为有一个问题是您要检查IModel是否具有某些属性,然后您尝试访问该属性,就像它是IModel的一部分一样,因此它不会对我有意义。

您也可以尝试使用反射来获取值:

public class Program
{
    public interface IModel {}

    public class Model1 : IModel{}
    public class Model2 : IModel {
        public string Field03 {get;set;}
    }
    public static void Main()
    {
        Func<IModel, string> predicateField03 = s => s.GetType().GetProperty("Field03") != null && s.GetType().GetProperty("Field03").GetValue(s).ToString().ToLower().Contains("33") ? 
            s.GetType().GetProperty("Field03").GetValue(s).ToString() : string.Empty;

        Console.WriteLine(predicateField03(new Model1()));
        Console.WriteLine(predicateField03(new Model2(){Field03 = "333"}));

    }
}

小提琴:https://dotnetfiddle.net/0KGjPA