gpt4 book ai didi

c# - 如何使用函数<>设置属性

转载 作者:行者123 更新时间:2023-11-30 19:55:59 27 4
gpt4 key购买 nike

假设我有一个函数,我如何设置记录上的属性

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;
}
}

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

最佳答案

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);
}

使用示例...

myObj.Prop = AsEnum<MyEnum>("value") ?? MyEnum.Default;
//versus
SetPropery<MyObject, MyEnum>(myobj, (r, e) => r.Prop = e, "value");

关于c# - 如何使用函数<>设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com