Sie können die impliziten und expliziten Cast-Operatoren für eine Klasse manuell außer Kraft setzen. Anleitung hier . Ich würde aber sagen, dass es meistens ein schlechtes Design ist. Ich würde sagen, es ist einfacher zu sehen, was vor sich geht, wenn man schreibt
string b = a.ToHtml();
Aber es ist durchaus möglich...
public class A
{
public string Content { get; set; }
public static implicit operator string(A obj)
{
return string.Concat("<span>", obj.Content, "</span>");
}
}
Um ein Beispiel dafür zu geben, warum ich dies nicht empfehle, betrachten Sie Folgendes:
var myHtml = "<h1>" + myA + "</h1>";
Die obigen Ausführungen ergeben "<h1><span>Hello World!</span></h1>"
Nun kommt ein anderer Entwickler daher und findet, dass der obige Code schlecht aussieht, und formatiert ihn in den folgenden um:
var myHtml = string.Format("<h1>{0}</h1>", myA);
Aber string.Format
ruft intern ToString
für jedes Argument, das es empfängt. Wir haben es also nicht mehr mit einem impliziten Cast zu tun, und infolgedessen wird der andere Entwickler das Ergebnis in etwas wie "<h1>myNamespace.A</h1>"