C#动态设置属性可能重复:.Net-反射设置对象属性通过反射设置带有字符串值的属性我相信有一个简单的方法可以做到这一点,我很厚,但我终生无法弄清楚。我有一个具有多个属性的对象。我们称该对象为objName。我正在尝试创建一个只用新属性值更新对象的方法。我希望能够在方法中执行以下操作:privatevoidSetObjectProperty(stringpropertyName,stringvalue,refobjectobjName){//对其余代码进行一些处理以确保我们确实想要设置此值。objName.propertyName=value}最后,调用:SetObjectProperty("nameOfProperty",textBoxValue.Text,refobjName);希望这个问题足够充实。如果您需要更多详细信息,请告诉我们。谢谢您的回答!objName.GetType().GetProperty("nameOfProperty").SetValue(objName,objValue,null)您可以使用反射来执行此操作,例如privatevoidSetObjectProperty(stringpropertyName,stringvalue,objectobj){PropertyInfopropertyInfo=obj.GetType().GetProperty(属性名称);//确保对象具有我们想要的属性if(propertyInfo!=null){propertyInfo.SetValue(obj,value,null);您可以使用Type.InvokeMember执行此操作。privatevoidSetObjectProperty(stringpropertyName,stringvalue,relobjName){objName.GetType().InvokeMember(propertyName,BindingFlags.Instance|BindingFlags.Public|BindingFlags.SetProperty,Type.DefaultBinder,objName,value);}先获取属性信息,再设置属性的值:PropertyInfopropertyInfo=objName.GetType().GetProperty(propertyName);propertyInfo.SetValue(propertyInfo,value,null);你可以用反射来做到这一点:voidSetObjectProperty(objecttheObject,stringpropertyName,objectvalue){Typetype=theObject.GetType();varproperty=type.GetProperty(propertyName);varsetter=property.SetMethod();setter.Invoke(theObject,newojbject[]{value});注意:为了便于阅读,有意省略了错误处理。以上就是《C#学习教程:C#动态设置属性分享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
