none
Dictionary mit Generic types (value) ? RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen

    Ist es möglich ein Dictionary mit Generic types zu erstellen ? 

    In der base-Klasse habe ich folgendes:

    public abstract Task<Dictionary<string, Product>> GetTickersAsync();

    in der Subklasse wird aber einmal ein Dictionary Task<Dictionary<string, Product>>

    und einmal ein Task<Dictionary<string, Underlying>> zurück gegeben.

    Gibt es eine Möglichkeit den Wert im Dictionary als "generic" zu definiere (in der baseclass) ?

    Irgendwie so: public abstract Task<Dictionary<string, T>> GetTickersAsync(); ?

    Besten Dank für eure Hilfe

    Gruess Dominic

    Dienstag, 11. September 2018 13:58

Alle Antworten

  • Hi,

    wie wäre es mit:

    Task<Dictionary<string, object>> GetTickersAsync();

    Viele Grüße, Chris

    Dienstag, 11. September 2018 14:46
  • och mensch… da hätte ich auch selber draufkommen können :) 

    Besten Dank

    ---Klappt aber leider nicht..

    cannot convert Dictionary<string,Product> to Dictionary<string,object>

    • Bearbeitet Huuuubi Dienstag, 11. September 2018 15:34
    Dienstag, 11. September 2018 15:21
  • Hi Dominic,

    ich glaube ich habe noch nicht ganz verstanden was du genau vor hast. Vielleicht kannst du noch etwas mehr von deinem Code posten.

    Hier wäre noch ein weiterer Vorschlag:

        class Program
        {
            static void Main(string[] args)
            {
                var b = new B();
                var c = new C();
                var d1 = b.test();
            }
        }
    
        public class Obj1 {}
    
        public class Obj2 {}
    
        abstract class A<T>
        {
            public abstract Dictionary<string, T> test();
        }
    
        class B : A<Obj1>
        {
            public override Dictionary<string, Obj1> test()
            {
                return new Dictionary<string, Obj1>
                {
                    {
                        "obj1-1",
                        new Obj1()
                    },
                    {
                        "obj1-2",
                        new Obj1()
                    },
                };
            }
        }
    
        class C : A<Obj2>
        {
            public override Dictionary<string, Obj2> test()
            {
                return new Dictionary<string, Obj2>
                {
                    {
                        "obj2-1",
                        new Obj2()
                    },
                    {
                        "obj2-2",
                        new Obj2()
                    },
                };
            }
        }

    Die Methode test wäre stellvertretend für GetTickersAsync und gibt hier ein Dictionary zurück. Ich hoffe das passt besser zu deinem Vorhaben.

    Viele Grüße, Chris

    Dienstag, 11. September 2018 20:56