string wellFormattedGuidAsString = ...;
Guid guid = wellFormattedGuidAsString;
...
Method(wellFormattedGuidAsString );
void Method(Guid id) { ... }
我尝试使用显式和隐式演员。
public static implicit operator Guid(string str)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
答案 0 :(得分:0)
您无法在所需对象之外创建隐式和显式运算符。
你能做的是:
public static class StringEx
{
public static Guid ToGuid(this string str)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
}
以后您可以像以下一样使用它:
string mestring = " ... ";
Guid guid = mestring.ToGuid();
修改强>
还有另一种方式(当然有)有点无用,但我会在这里发布:
创建一个将包装string
public class StringWrapper
{
string _string;
public StringWrapper(string str)
{
_string = str;
}
public static implicit StringWrapper operator(string str)
{
return new StringWrapper(str);
}
public static implicit string operator(StringWrapper strWrapper)
{
return strWrapper._string;
}
public static implicit Guid operator(StringWrapper strWrapper)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
public static implicit StringWrapper operator(Guid guid)
{
return guid.ToString();
}
}
这个无用的课让你做这样的事情:
string str = "..";
Guid guid = (StringWrapper)str;
答案 1 :(得分:-1)
只是重载你的方法:
void Method(Guid id) { ... }
void Method(string guid) {
Guid _guid;
Guid.TryParse(guid, out _guid);
Method(_guid);
}