Guid mainfolderid = (main.GetValue(""));
где main
- динамический объект.
Как я могу преобразовать вышеупомянутый main.GetValue("")
в System.Guid
?
Ошибка говорит
Невозможно неявно преобразовать объект типа в 'System.Guid'.
Guid mainfolderid = (main.GetValue(""));
где main
- динамический объект.
Как я могу преобразовать вышеупомянутый main.GetValue("")
в System.Guid
?
Ошибка говорит
Невозможно неявно преобразовать объект типа в 'System.Guid'.
Действительно ли метод GetValue
возвращает Guid
, введенный как object
? Если это так, то вам просто нужно выполнить явное приведение, например:
Guid mainfolderid = (Guid)main.GetValue("");
Если нет, возвращает GetValue
то, что может быть передано одному из конструкторов (т.е. a byte[]
или string
)? В этом случае вы можете сделать это:
Guid mainfolderid = new Guid(main.GetValue(""));
Если ни одно из указанных выше не применимо, вам понадобится выполнить ручную работу, чтобы преобразовать все, что было возвращено GetValue
, в Guid
.
Guid mainfolderid = new Guid(main.GetValue("").ToString());
Если вы используете .Net 4.0, в структуру Guid были добавлены методы Parsing:
Guid Guid.Parse(string input)
и
bool Guid.TryParse(string input, out Guid result)
сделает то, что вы хотите.
Один из способов - использовать конструктор GUID и передать ему строковое представление GUID. Это будет работать, если объект действительно представляет собой строковое представление GUID. Пример:
Guid mainfolderid = new Guid(main.GetValue("").ToString());
Guid mainfolderid = (Guid)(main.GetValue(""));
Guid может быть построено строковым представлением, поэтому это должно работать:
Guid result = new Guid(main.GetValue("").ToString());
Существует решение, использующее тип объекта:
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() + "}";
}