Zum Inhalt springen

C# Nullable Dynamic Type


Empfohlene Beiträge

Geschrieben

Hallo,

ich möchte aktuell in einer Typisierten Klasse (bzw. erstmal im Interface) einen Typ als Nullable definieren.

Geht das überhaupt? Ich kann leider nichts dazu finden.

    public interface IBaseElement<T>
    {
        void InsertOrUpdate(T? givenDBElement = null);
    }

ist leider nicht erlaubt da T per se mal nicht nullable ist.

Ich hätte auch versucht etwas wie 

    public interface IBaseElement<T> where T : Nullable
    {
        void InsertOrUpdate(T? givenDBElement = null);
    }

zu verwenden, aber auch das akzeptiert mir der Compiler nicht.

Danke
LG
Jasso

Geschrieben

Wenn du damit leben kannst, nur Klassen als generischen Typ zu nutzen kannst du das mit

public interface IBaseElement<T> where T : class

machen - die sind dann auch nullable.

Wenn das auch für structs funktionieren soll, kommst du kaum um Runtime-Checks herum, sowas wie das hier:

if(Nullable.GetUnderlyingType(typeof(T)) != null)
{
    "Nullable!".Dump();
}
else if(typeof(T).IsValueType)
{
    "struct".Dump();
}
else
{
    "class".Dump();
}

 

Geschrieben

@arlegermi:  "nur Klassen" würde mir vollkommen reichen.
Leider funktioniert es damit ebenfalls nicht.
Mit ...

    public interface IBlub<T> where T : class
    {
        void InsertOrUpdate(T? givenDBElement = null);
    }

… bekomme lediglich vom Compiler die Meldung:

Zitat

Der Typ "T" darf keine NULL-Werte zulassen, wenn er als T-Parameter im generischen Typ oder in der generischen Methode "Nullable<T>" verwendet werden soll.

@KeeperOfCoffe: Danke fürs nachgoogeln. Die Ergebnisse habe ich bereits gefunden. Helfen mir nur in meinem konkreten Fall leider nicht weiter.

Danke
LG
Jasso

Geschrieben

Wenn du schon den Constraint

where T : class

hast, dann brauchst du kein ? mehr hinter dem Parameter - die sind ja eh nullable.

Oder geht's dir hier gerade um das neue Sprachfeature mit nullable reference types in C# 8?

Geschrieben

au weh … da hast Du natürlich recht. War noch ein gedankliches Überbleibsel aus meinen ersten Versuchen.

Danke so funktioniert es!
LG
Jasso

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...