将对象转换为System Guid

时间:2010-09-27 16:52:13

标签: c#

Guid mainfolderid = (main.GetValue(""));

其中main是动态实体。

如何将上述main.GetValue("")转换为System.Guid

错误说

  

无法将类型对象隐式转换为'System.Guid'。

7 个答案:

答案 0 :(得分:23)

GetValue方法是否实际返回Guid类型object?如果是这样,那么你只需要像这样执行显式转换:

Guid mainfolderid = (Guid)main.GetValue("");

如果没有,GetValue是否会返回可以传递给其中一个构造函数的东西(即byte[]string)?在这种情况下,你可以这样做:

Guid mainfolderid = new Guid(main.GetValue(""));

如果以上两种情况都不适用,那么您需要做一些手动工作,将GetValue返回的内容转换为Guid

答案 1 :(得分:4)

Guid mainfolderid = new Guid(main.GetValue("").ToString());

答案 2 :(得分:4)

如果您使用的是.Net 4.0,则会在Guid结构中添加解析方法:

Guid Guid.Parse(string input)

bool Guid.TryParse(string input, out Guid result)

会做你想做的事。

答案 3 :(得分:1)

一种方法是使用GUID构造函数,并向其传递GUID的字符串表示形式。如果对象实际上是GUID的字符串表示,这将起作用。例如:

Guid mainfolderid = new Guid(main.GetValue("").ToString());

答案 4 :(得分:0)

Guid mainfolderid = (Guid)(main.GetValue(""));

答案 5 :(得分:0)

Guid可能是constructed by string representation,所以这应该有效:

Guid result = new Guid(main.GetValue("").ToString());

答案 6 :(得分:-1)

使用对象的类型有一个解决方案:

GuidAttribute   guidAttr;
object[]        arrAttrs;
Type            type;
string          strGuid;

type = main.GetType();
arrAttrs = type.Assembly.GetCustomAttributes(typeof(System.Runtime.InteropServices.GuidAttribute), false);
guidAttr = (arrAttrs != null && arrAttrs.Length > 0) ? arrAttrs[0] as GuidAttribute: null;
if (guidAttr != null) {
    strGuid = "{" + guidAttr.Value.ToUpper() + "}";
}