gpt4 book ai didi

c# - 如何使用 FastMember 设置嵌套属性值

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

当我尝试使用 FastMember 设置嵌套成员属性时出现异常。例如当有这些类(class)时

public class A
{
public B First { get; set; }
}

public class B
{
public string Second { get; set; }
}

我想将实例的 First.Second 设置为 "hello"

var b = new B{ Second = "some value here" };
var a = new A{ First = b };
var accessor = ObjectAccessor.Create(a);
accessor["First.Second"] = value; // this does not work and gives ArgumentOutOfRangeException

我无法将其拆分为 ["First"]["Second"],因为此时我不知道深度。嵌套属性是否有神奇的访问权限,还是我必须自己拆分层次结构?

最佳答案

我以这种方式使用扩展方法递归地解决了这个问题:

public static class FastMemberExtensions
{
public static void AssignValueToProperty(this ObjectAccessor accessor, string propertyName, object value)
{
var index = propertyName.IndexOf('.');

if (index == -1)
{
accessor[propertyName] = value;
}
else
{
accessor = ObjectAccessor.Create(accessor[propertyName.Substring(0, index)]);
AssignValueToProperty(accessor, propertyName.Substring(index + 1), value);
}
}
}

...这是按如下方式开始的:

ObjectAccessor.Create(a).AssignValueToProperty("First.Second", "hello")

关于c# - 如何使用 FastMember 设置嵌套属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305645/

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