代码之家  ›  专栏  ›  技术社区  ›  Ashutosh

将对象转换为系统Guid

c#
  •  13
  • Ashutosh  · 技术社区  · 15 年前
    Guid mainfolderid = (main.GetValue(""));
    

    哪里 main

    我怎样才能把上面提到的转换成 main.GetValue("") System.Guid ?

    无法将类型对象隐式转换为'系统.Guid'.

    7 回复  |  直到 15 年前
        1
  •  24
  •   LukeH    15 年前

    是吗 GetValue 方法实际返回 Guid 键入为 object

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

    方法 byte[] string

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

    如果以上两个都不适用,那么您需要做一些手工工作来转换返回的内容 方法 Guid .

        2
  •  5
  •   Dustin Laine    15 年前
    Guid mainfolderid = new Guid(main.GetValue("").ToString());
    
        3
  •  4
  •   Matt Mills    15 年前

    Guid Guid.Parse(string input)
    

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

    我会做你想做的。

        4
  •  1
  •   ChessWhiz    15 年前

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

    Guid mainfolderid = new Guid(main.GetValue("").ToString());
    
        5
  •  0
  •   Steve Danner    15 年前
    Guid mainfolderid = (Guid)(main.GetValue(""));
    
        6
  •  0
  •   Pavel Morshenyuk    15 年前

    Guid 可以是 constructed by string representation

    Guid result = new Guid(main.GetValue("").ToString());
    
        7
  •  -1
  •   BlueWolfy    12 年前

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

    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() + "}";
    }