Sie können keine impliziten und expliziten Operatoren außerhalb des gewünschten Objekts erstellen.
Was können Sie tun, stattdessen ist:
public static class StringEx
{
public static Guid ToGuid(this string str)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
}
Und später Sie es mögen können:
string mestring = " ... ";
Guid guid = mestring.ToGuid();
EDIT:
Eine andere Möglichkeit gibt es (natürlich gibt es) Das ist ein bisschen nutzlos, aber ich poste es hier:
eine Klasse machen, die 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();
}
}
Und diese nutzlose Klasse Lassen Sie uns wickeln werden Sie so etwas tun:
string str = "..";
Guid guid = (StringWrapper)str;
Und was passiert, wenn man versucht, es? –
Sie haben versucht und .... was ist passiert? –
Sie können Operatoren für vorhandene .net-Typen nicht überladen, Sie könnten eine Erweiterungsmethode bereitstellen, die 'string' in' Guid' konvertiert. –