Рассмотрите следующий код:
public class TextType {
public TextType(String text) {
underlyingString = text;
}
public static implicit operator String(TextType text) {
return text.underlyingString;
}
private String underlyingString;
}
TextType text = new TextType("Something");
String str = text; // This is OK.
Но я хочу смочь, делают следующее, если это возможно.
TextType textFromStringConstant = "SomeOtherText";
Я не могу расширить Строковый класс с помощью TextType неявная перегрузка оператора, но являюсь там каким-либо способом присвоить литеральную строку другому классу (который обрабатывается методом или чем-то)?
Строка является ссылочным типом поэтому, когда они разработали C#, они, очевидно, должны были использовать некоторый способ получить строковый литерал к классу. Я просто надеюсь, что это не hardcoded на язык.
public static implicit operator TextType(String text) {
return new TextType(text);
}
. Add
public static implicit operator TextType(string content) {
return new TextType(content);
}
to your class? :)