如何使用func<>设置属性

时间:2016-02-08 19:57:55

标签: c# reflection func

说我有一个功能如何在记录上设置属性

public void SetProperty<TRecord, TEnum>(TRecord item,  
                                        Func<TRecord, TEnum> property, string enumValue )
   where TEnum : struct
   where TRecord : class
{
     TEnum enumType;
     if (Enum.TryParse(enumValue, true, out enumType))
     {
         //How Do I set this?
         property.Invoke(item) = enumType;
     }
}

我不想将其切换为表达式。有人知道如何设置属性吗?

1 个答案:

答案 0 :(得分:7)

stepsize=1

更好的方式......

public void SetProperty<TRecord, TEnum>(TRecord item,
                                Action<TRecord, TEnum> property, string enumValue)
    where TEnum : struct
    where TRecord : class
{
    TEnum enumType;
    if (Enum.TryParse(enumValue, true, out enumType))
    {
        property(item, enumType);
    }
}

用法示例......

public TEnum? AsEnum<TEnum>(string enumValue)
    where TEnum : struct
{
    TEnum enumType;
    if (Enum.TryParse(enumValue, true, out enumType))
    {
        return enumType;
    }
    return default(TEnum);
}