猿问

通过属性列表作为参数

希望通过一个类的属性列表,然后为每个传递的属性读取自定义属性:


class Foo 

{

    [FooBar(Name="Prop1")]

    public string Prop1 { get; set; }


    [FooBar(Name="Prop2")]

    public int Prop2 { get; set; }


    [FooBar(Name="Prop3")]

    public bool Prop3 { get; set; }

}


// unsure of the props parameter type here

public List<string> GetAttr(Expression<List<Func<Foo, object>>> props)

{

    foreach(var prop in props)

    {

        // get FooBar attributes name value of the properties passed in

    }

}

然后按照以下方式引用:


GetAttr(bar => { bar.Prop1, bar.Prop2 });

这将返回:


"Prop1", "Prop2"

我设法通过将参数定义为 params Expression>> 使其工作,但这最终非常冗长,因为每次都需要指定条形引用:


GetAttr(bar => bar.Prop1, bar => bar.Prop2);

虽然这有效,但它比我试图替换的系统更冗长。


目的是能够指定列表中返回的属性


编辑:在示例代码中添加了另一个属性。


蝴蝶刀刀
浏览 123回答 1
1回答
随时随地看视频慕课网APP
我要回答