如何将属性映射传递给此方法?

时间:2015-07-18 18:53:52

标签: .net properties mapping

public static SelectOption ToSelectOption(this BaseDomainEntity entityModel) {
    return new SelectOption {
        Id = entityModel.DomainId,
        Name = entityModel.Name
    };
}

在整个应用程序中使用此方法来创建选择选项。大多数情况下,每个模型都包含id和name作为我们想要使用的字段。但是,有时候,我们可能不得不使用Id和ProductNumber或Id和Description等。有没有办法可以传递我的函数的映射?

我甚至不知道从哪里开始,但从概念上讲,它就像

Id => entity.ProductNumber

Name => entity.Description

这样,每当某些东西需要与普通方法有所不同时,我就不必编写新函数。我想在没有传递属性名称和使用反射的情况下这样做。

1 个答案:

答案 0 :(得分:1)

我不确定这对你来说是否会有太多代码,但请参见下文。

 public static SelectOption ToSelectOption(this BaseDomainEntity entityModel, Func<BaseDomainEntity, SelectOption> selector)
    {

        return selector(entityModel);

    }

用法如下。

var option = instance.ToSelectOption(x => new SelectOption { Id = x.DomainId, Name = x.Name});