Wenn ein Benutzer eine Antwort auf eine Frage ändert, möchte ich, dass er den Grund aus einer Reihe von Gründen angibt und je nach gewähltem Grund Ich möchte eine bestimmte Unterklasse erstellen. Also ich möchte den Typ in der ChangeReason
Klasse erstellen. Ich kann es so tun, überprüft, dass die Art richtig zur Laufzeit angegeben ist:Verwendung von Type als Parameter, aber Beschränkung auf eine Basisklasse zum Zeitpunkt der Kompilierung
public class ChangeReason
{
Type _TypeToCreate;
public void SetQuestionType(Type value)
{
if (!value.IsSubclassOf(typeof(BaseAnsweredQuestion)))
throw new InvalidOperationException("Invalid Type");
_TypeToCreate = value;
}
}
Gibt es eine Möglichkeit, die Art zum Zeitpunkt der Kompilierung zu beschränken, vielleicht eine generische Methode? Ich möchte es so nennen:
var reason = new ChangeReason();
reason.SetQuestionType(typeof(AnsweredQuestion));
Diese leicht durch googeln beantwortet wird "C# generischen Typen beschränken" ... Siehe die [MSDN article] (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters) –
Enttäuscht vom Downvote, nachdem er eine Barriere getroffen hat, versucht in den Griff zu bekommen mit Generika habe ich ausgestreckt um Hilfe, und ich bin überrascht, dass jemand denkt, dass diese Frage als "unerhört schlampig, ohne Aufwand ausgegebene Post" beschrieben werden könnte. https://stackoverflow.com/help/privileges/vote-down – Colin