Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

[gelöst] Funktion mit Type-Parameter, Type muss aber Interface implementieren
sth_Weird
myCSharp.de - Member



Dabei seit:
Beiträge: 469
Herkunft: BaWü

Themenstarter:

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

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von sth_Weird am .
~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+
Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht
* * *
Linux is for free...if your time is worth nothing
~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

Hallo sth_Weird,

Du kannst das als Generic machen


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

Lieben Gruß,

pdelvo
private Nachricht | Beiträge des Benutzers
malignate
myCSharp.de - Member

Avatar #avatar-3206.png


Dabei seit:
Beiträge: 742

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2.207
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo zusammen,

als Zusatz dazu

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

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
sth_Weird
myCSharp.de - Member



Dabei seit:
Beiträge: 469
Herkunft: BaWü

Themenstarter:

[gelöst]

beantworten | zitieren | melden

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
~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+
private Nachricht | Beiträge des Benutzers