DotNet匿名类无法通过反射设置属性值

53 阅读1分钟

直接看代码

static void Main(string[] args)
{
	var role = new
	{
		Name = "叶修",
		Weapon = "却邪"
	};
	var type = role.GetType();
	var property = type.GetProperty("Weapon");
	property.SetValue(role, "千机伞");
	Console.WriteLine(role.Weapon);
	Console.ReadKey();
}

在运行到property.SetValue(role, "千机伞")时会报错System.ArgumentException:“未找到属性设置方法。”

但如果不使用匿名类就没事

static void Main(string[] args)
{
	var role = new Role()
	{
		Name = "叶修",
		Weapon = "却邪"
	};
	var type = role.GetType();
	var property = type.GetProperty("Weapon");
	property.SetValue(role, "千机伞");
	Console.WriteLine(role.Weapon);
	Console.ReadKey();
}

public class Role
{ 
	public string Name { get; set; }
	public string Weapon { get; set; }
}

简单记录一下。