Pregunta

Considere el siguiente código:

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.

Pero quiero poder hacer lo siguiente, si es posible.

TextType textFromStringConstant = "SomeOtherText";

No puedo extender la clase de cadena con la sobrecarga del operador implícito de TextType, pero ¿hay alguna forma de asignar una cadena literal a otra clase (que se maneja por un método o algo así)?

La cadena es un tipo de referencia, por lo que cuando desarrollaron C# obviamente tuvieron que usar alguna forma de obtener una cadena literal a la clase. Solo espero que no esté codificado en el idioma.

¿Fue útil?

Solución

public static implicit operator TextType(String text) {
    return new TextType(text);
}

Otros consejos

Agregar

public static implicit operator TextType(string content) {
  return new TextType(content);
}

a tu clase? :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top