当前位置: 首页 > 编程语言 > C#

C#LearningTutorial-UnabletogetPropertyInfo.SetValue()tosetavalueonmyobject分享

时间:2023-04-10 22:26:40 C#

UnabletogetPropertyInfo.SetValue()tosetavalueonmyobject我仍然无法获得要设置的值。执行propertyInfo.SetValue()时,它会在我的Contact对象的setter上设置一个断点,并在“setter”中正确设置值。但是,在执行SetValue()之后,projectContact.Contact对象上的字符串属性并未更改为“a”。知道我在这里做错了什么吗?IEnumerable联系人=GetContactsByProject(projectId);foreach(ProjectContactprojectContactincontacts){foreach(PropertyInfopropertyInfoinprojectContact.Contact.GetType().GetProperties()){if(propertyInfo.PropertyType==typeof(string)){设置属性值。(projectContact.Contact,"a",null);我可以想到两种可能性:属性设置器在该属性上无法正常工作。它可能设置了与属性获取器不同的字段,因此当您设置属性时,您永远不会真正“设置”实际值。如果“Contact”是一个结构(值类型),projectCOntact.Contact将返回该结构的副本。这将防止您不断更改“真实”对象。我猜你的ProjectContact类型是一个结构。由于结构是按值传递的,因此您要在结构的副本上设置值,然后将其丢弃。这就是可变结构是邪恶的并且应该不惜一切代价避免的原因。您应该将ProjectContact类型更改为类。您的二传手中也可能存在错误。以上就是C#学习教程:UnabletogetPropertyInfo.SetValue()tosetthevalueonmyobject的所有内容分享,如果对大家有用还需要详细了解C#学习教程,希望大家多多支持更多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: