AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C# [C# Generics] Casting auf Abgeleitete Typen?

[C# Generics] Casting auf Abgeleitete Typen?

Ein Thema von Phoenix · begonnen am 24. Jan 2007 · letzter Beitrag vom 27. Jan 2007
 
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#1

[C# Generics] Casting auf Abgeleitete Typen?

  Alt 24. Jan 2007, 13:29
Gleich in die Vollen:

Ich habe eine Liste<T> und ein Item. Beide Leite ich ab, weil ich auf speziellen Liste spezielle Initialisierungen der Items brauche. Nun klappt aber das Typecasting im abgeleiteten Item von einem Verweis auf die zugehörige Liste nicht.

Kann mir wer dazu was konkretes sagen?

Hier mein Code:

Code:
using System.Collections.Generic;

namespace MyNamespace
{
    public class MyBaseList<T> : List<T>, INotifyPropertyChanged
        where T : MyBaseItem
    {
        protected Boolean _init = false;
        protected Boolean _modified = false;
        protected List<T> _deleteditems = null;
        ...
    }
}
Soweit dürfte das klar sein. Ich brauche nun noch ein Baseitem. Um in der Struktur aber sauber navigieen zu können benötigt mein Item einen Verweis auf die übergeordnete Liste:

Code:
        public class MyBaseItem : INotifyPropertyChanged
    {
        protected MyBaseList<MyBaseItem> _collection = null;
        protected Boolean _init = false;
        protected Boolean _modified = false;
        ...
    }
Das geht soweit. Nun habe ich jedoch eine abgeleitete Klasse meines BaseItems:

Code:
    public class SystemParameterList<T> : MyBaseList<T>
        where T : SysParam
    {
        IDbCommand _savecmd = null;
        Boolean _savecmdinit = false;
        IDbCommand _deletecmd = null;
        Boolean _deletecmdinit = false;

        public SystemParameterList()
            : base()
        {
            Trace.WriteLineIf(Logging.TraceLevel.TraceVerbose, "Instance Created");
        }
        ...
    }


    public class SysParam : MyBaseItem
    {
        private String _guid = "";
        private String _name = "";
        private String _value = "";
        private ValType _type = ValType.String;

        public SystemParameterList<SysParam > Collection
        {
            get { return (SystemParameterList<SysParam>)_collection; }  // genau HIER steigt der Compiler aus
            set { _collection = value; }
        }
Beim Kommentar gehts in die Hose. Er kann _collection (ist ja vom typ MyBaseList<MyBaseItem>) nicht nach SystemParameterList<SysParam> casten, obwohl SystemParameterList von MyBaseList abgeleitet ist und der SysParam freilich von MyBaseItem abgeleitet ist.

Wie kann ich das auflösen?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz