C# 我可以在一行中调用prop.setValue吗?
是否可以在一行中调用此“setvalue()”方法C# 我可以在一行中调用prop.setValue吗?,c#,enums,C#,Enums,是否可以在一行中调用此“setvalue()”方法 var genderProp = inj.GetType().GetProperty("gender"); genderProp.SetValue(inj, Enum.Parse(genderProp.PropertyType, "Male"), null); 您可以执行以下操作,但不确定它如何有助于提高代码的可读性 inj.GetType().GetProperty("gender").SetValue(inj, Enum.Parse(in
var genderProp = inj.GetType().GetProperty("gender");
genderProp.SetValue(inj, Enum.Parse(genderProp.PropertyType, "Male"), null);
您可以执行以下操作,但不确定它如何有助于提高代码的可读性
inj.GetType().GetProperty("gender").SetValue(inj, Enum.Parse(inj.GetType().GetProperty("gender").PropertyType, "Male"), null);
另一种办法是:
inj.GetType().InvokeMember("gender",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, inj, new[]{Enum.Parse(inj.GetType().GetProperty("gender").PropertyType, "Male")});
就我个人而言,我更喜欢两行代码。您可以做如下操作,但不确定它如何有助于提高代码的可读性
inj.GetType().GetProperty("gender").SetValue(inj, Enum.Parse(inj.GetType().GetProperty("gender").PropertyType, "Male"), null);
另一种办法是:
inj.GetType().InvokeMember("gender",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, inj, new[]{Enum.Parse(inj.GetType().GetProperty("gender").PropertyType, "Male")});
就个人而言,我更喜欢两行代码。如果您选择单语句,但仍然尝试不调用
GetProperty
两次,那么可以使用
如果您选择单个语句,但仍然尝试不调用
GetProperty
两次,则可以使用
我应该改变我的帖子,并且说不要两次调用getpropertyconvoluted@user1186050这是因为你想要你的代码:)你所拥有的是相当可读的。。。而且反射通常没有语法糖分来缩短它。。。另外,如果
dynamic
是您的一个选项,那么它将更加紧凑(我已经在我的答案中添加了该选项)。我应该更改我的帖子,并且说,不必调用getproperty两次。您的替代方法似乎很长,而且convoluted@user1186050这是因为你想要你的代码:)你所拥有的是相当可读的。。。而且反射通常没有语法糖分来缩短它。。。另外,如果dynamic
是您的一个选项,那么它将更加紧凑(我已将该选项添加到我的答案中)。