Ich möchte einen Konstruktor Aufruf nur eine begrenzte Anzahl von "Erweiterungen" zulassen. Lassen Sie uns sagen, ich habe diese 2 Klassen:Aufruf Konstruktor mit anderen Klassenkonstanten Wert
public class Foo
{
public Foo(Extension ext)
{
// do something
}
}
public class Extension
{
public const string TXT = ".txt";
public const string XML = ".xml";
}
Also, wenn ein anderer Entwickler Foo
verwenden möchte, kann er dies nur tun, mit den Werten aus der Extension
Klasse wie folgt:
Foo foo = new Foo(Extension.TXT);
Aber wenn man versucht, um dies zu tun, bekomme ich einen IDE-Fehler, der sagt: "cannot convert from 'string' to '<ProjectName>.Extension'
.
public class Extension
{
public enum File
{
TXT,
XML
}
}
und es wie folgt verwenden:
Als „Abhilfe“ Ich konnte meine Extension
Klasse so etwas wie dies ändern
Foo foo = new Foo(Extension.File.TXT);
, die perfekt funktioniert gut, aber was Ich mag es nicht ist, dass der Aufruf eine Ebene länger ist (Klasse -> Enum -> Element statt Klasse -> Element).
Also ist die Frage, ist meine Problemumgehung eigentlich die einzige gültige, korrekte oder Best-Practice-Lösung?
entfernen und es machen Öffentlichkeit. Sie rufen nur die enum auf: 'new Foo (File.Txt);'. –