Domanda

Si consideri il seguente codice:

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.

Ma io voglio essere in grado effettuare le seguenti operazioni, se possibile.

TextType textFromStringConstant = "SomeOtherText";

Non riesco a estendere la classe String con l'overload dell'operatore implicita texttype, ma c'è un modo per assegnare una stringa letterale di un'altra classe (che è gestito da un metodo o qualcosa del genere)?

String è un tipo di riferimento in modo da quando hanno sviluppato C # che ovviamente dovevano usare un modo per ottenere una stringa letterale alla classe. Spero solo che non è insita nel linguaggio.

È stato utile?

Soluzione

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

Altri suggerimenti

Aggiungi

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

per la vostra classe? :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top