Laden...

[gelöst] Funktion mit Type-Parameter, Type muss aber Interface implementieren

Erstellt von sth_Weird vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.486 Views
S
sth_Weird Themenstarter:in
469 Beiträge seit 2007
vor 9 Jahren
[gelöst] Funktion mit Type-Parameter, Type muss aber Interface implementieren

Ich steh grad auf dem Schlauch...
Ich habe eine Funktion RegisterDataTemplate(Type type, DataTemplate template), diese soll für einen bestimmten Datentyp "type" ein DataTemplate in meinem Template-Dictionary registrieren.
Nun möchte ich aber einschränken, dass nur solche Typen verwendet werden dürfen, die ein bestimmtes Interface implementieren.
Kann ich das schon in der Funktionsdefinition einschränken (ich meine das schonmal gesehen zu haben, bin mir aber nicht sicher,...
Zur Klarstellung nochmal: Ich möchte nicht haben RegisterDataTemplate(IMyInterface myObject, DataTemplate template)!!! Es geht nicht um ein bestimmtes Objekt, sondern den Typ eines Objekts. Also bräuchte ich eher sowas wie (Type type where type implements IMyInterface ..) in meinem Funktionsaufruf...
Kann mir jemand sagen ob das überhaupt geht und wenn ja wie (oder wo ich es nachlesen kann wie es geht), oder auch einfach ob es eben nicht geht...

Gruß & Danke
sth_Weird

++++++++++++++++++++~+
Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht


Linux is for free...if your time is worth nothing
++++++++++++++++++++~+

1.346 Beiträge seit 2008
vor 9 Jahren

Hallo sth_Weird,

Du kannst das als Generic machen


RegisterDataTemplate<T>(DataTemplate template) where T : IMyInterface 
{
    Type type = typeof(T);
}

Lieben Gruß,

pdelvo

742 Beiträge seit 2005
vor 9 Jahren

Pdelvo war schneller, wollte gerade das gleiche schreiben.

Sonst gibt es keine Alternative. Einfach den Type checken und eine ArgumentExeption kann aber auch eine gute Lösung sein, evtl. sogar beide Methoden.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo zusammen,

als Zusatz dazu

Einschränkungen für Typparameter (C#-Programmierhandbuch)

Gruss

Coffeebean

S
sth_Weird Themenstarter:in
469 Beiträge seit 2007
vor 9 Jahren
[gelöst]

das war's was ich gesucht hab...danke!

++++++++++++++++++++~+
Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht


Linux is for free...if your time is worth nothing
++++++++++++++++++++~+