gpt4 book ai didi

c# - 如何从 PropertyInfo 获取属性的值?

转载 作者:IT王子 更新时间:2023-10-29 04:41:42 26 4
gpt4 key购买 nike

我有一个包含属性集合的对象。当我获得特定实体时,我可以看到我正在寻找的字段 (opportunityid) 并且它的 Value 属性是此的 Guid机会。这是我想要的值,但它并不总是一个机会,因此我不能总是查看 opportunityid,因此我需要根据用户提供的输入获取该字段.

到目前为止我的代码是:

Guid attrGuid = new Guid();

BusinessEntityCollection members = CrmWebService.RetrieveMultiple(query);

if (members.BusinessEntities.Length > 0)
{
try
{
dynamic attr = members.BusinessEntities[0];
//Get collection of opportunity properties
System.Reflection.PropertyInfo[] Props = attr.GetType().GetProperties();
System.Reflection.PropertyInfo info = Props.FirstOrDefault(x => x.Name == GuidAttributeName);
attrGuid = info.PropertyType.GUID; //doesn't work.
}
catch (Exception ex)
{
throw new Exception("An error occurred when retrieving the value for " + attributeName + ". Error: " + ex.Message);
}
}

动态 attr 包含我要查找的字段(在本例中为 opportunityid),它又包含一个值字段,这是正确的 指导。但是,当我获得 PropertyInfo 信息 (opportunityid) 时,它不再具有 Value 属性。我尝试查看 PropertyType.GUID,但这并没有返回正确的 Guid。我怎样才能获得此属性的值?

最佳答案

除非属性是static,否则仅获取PropertyInfo 对象来获取属性值是不够的。当您编写“普通”C# 并且需要获取某个属性的值时,例如 MyProperty,您可以这样写:

var val = obj.MyProperty;

您提供两件事 - 属性名称(即要获取的内容)和对象(即从哪里获取它)。

PropertyInfo 表示“什么”。您需要单独指定“从哪里”。当你打电话时

var val = info.GetValue(obj);

您将“从哪里”传递给 PropertyInfo,让它为您从对象中提取属性值。

注意:在 .NET 4.5 之前,您需要将 null 作为第二个参数传递:

var val = info.GetValue(obj, null);

关于c# - 如何从 PropertyInfo 获取属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26382810/

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