如何使用System.Type将XElement强制转换为GUID
本文关键字:转换 GUID XElement 何使用 System Type | 更新日期: 2023-09-27 18:28:28
例如,我有XElement,如下所示:
<Id>5E64F866-823E-4B2F-AE7D-D780444011E9</Id>
我需要将它转换为System.Guid。我知道我可以使用显式转换:
var xElem = xElement.Parse("<Id>5E64F866-823E-4B2F-AE7D-D780444011E9</Id>");
var myGuid = (Guid)xElem;
但我真正需要的是:
var guidType = typeof(Guid);
var xElem = xElement.Parse("<Id>5E64F866-823E-4B2F-AE7D-D780444011E9</Id>");
var myGuid = xElem.ConvertToObject(guidType); // for example, pseudo method
我在代码中使用反射,并且我需要使用propertyInfo.SetValue(object,object)为属性设置值的能力。我为属性设置的值的可能类型始终是XElement显式转换支持的类型之一(msdn)。希望有人能理解我的问题:)
有办法做到这一点吗?非常感谢。
XElement DOM不支持将属性或主体绑定到特定类型。它永远是一根绳子。
假设您提供的只是一个简化的示例,下面的内容可能会在更复杂的场景中对您有所帮助。
IEnumerable<Guid> ids = from e in d.Root.Elements()
where e.Name == (ns + "employee")
select new Guid(e.Attribute("Id").Value);
或者你可以设计一个XElement的扩展方法,看看传递的类型是否有一个构造函数,它通过反射接收字符串并调用它。不过这有点复杂。