Autor Beitrag
shamanu
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 16.09.09 17:58 
Aktueller Stand:
A = Basisklasse
B = Mehrere von A abgeleitete Klassen

In B sind jedoch noch Funktionalitäten enthalten welche bei allen gleich sind.

Das Problem basiert auf den Membern:
B1 hat mehrere Listen welche von den Typen immer folgendermaßen aufgebaut sind IList<KeyValuePair<string, int>>
B2 hat mehrere Listen welche von den Typen immer folgendermaßen aufgebaut sind IList<KeyValuePair<string, bool>>
B3 hat mehrere Listen welche von den Typen immer folgendermaßen aufgebaut sind IList<KeyValuePair<string, xxx>>
...
auf diesen werden teilweise die gleichen Opterationen ausgeführt. Den Teil welcher gleich ist würde ich gerne nach A auslagern.

Gibt es für das Auslagern eine elegante Lösung?
Wenn ich den typ object nehme (anstatt int, bool usw) wäre jederzeit ein casting + Un/Boxing notwendig und die Typsicherheit geht verloren.
Die Basisklasse müßte also generisch auf den Listen arbeiten können während die abgeleitete Klasse trotzdem direkt darauf zugreifen kann.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 16.09.09 18:21 
Hallo!

Meinst Du sowas?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            var b = new B();
            b.Add("foo"4);
        }
    }


    class B : A<int> { }


    class A<T>
    {
        private List<KeyValuePair<string, T>> l;

        public A()
        {
            l = new List<KeyValuePair<string, T>>();
        }

        public void Add(string name, T stuff)
        {
            l.Add(new KeyValuePair<string, T>(name, stuff));
        }
    }
}


Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
shamanu Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 16.09.09 18:45 
Hi,
so funktioniert das also. Ja, das ist genau was ich gesucht habe.
Ich habe es letzte Woche bereits in diese Richtung probiert wobei meine Herangehensweise offensichtlich an diesem Punkt fehlgeschlagen ist:
ausblenden C#-Quelltext
1:
class B<int> : A<T> { }					


Danke für die schnelle Hilfe.