Guid mainfolderid = (main.GetValue(""));
其中main
是动态实体。
如何将上述main.GetValue("")
转换为System.Guid
?
错误说
无法将类型对象隐式转换为'System.Guid'。
答案 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() + "}";
}