vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Generischen Typen umwandeln 
Autor: IIIIIChrisIIIII
Datum: 31.08.11 19:12

Hallo Preisser,

vielen Dank für deine Antwort! Das mit den ko oder kontravarianten Typenparametern ist mir nach meinem Post auch eingefallen, kommt aber in meinem konkreten Fall nicht vor. Ich hatte bei meinem Code der Einfachheitshalber einige Sachen rausgelassen/vergessen. So ist es vollständig:
Public Class Form1
 
	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles Button1.Click
		Dim Obj As Object = New ExtTest()
		Dim T As ITest(Of Object, Control) = DirectCast(Obj, ITest(Of Object, _
  Control))
	End Sub
End Class
 
 
 
#Region "Test1"
Public Interface ITest(Of TA, TB As Windows.Forms.Control)
 
	Property O As TA
	Property Ctrl As TB
 
End Interface
 
Public Class Test(Of TA, TB As Windows.Forms.Control)
	Implements ITest(Of TA, TB)
 
	Public Property Ctrl As TB Implements ITest(Of TA, TB).Ctrl
		Get
 
		End Get
		Set(ByVal value As TB)
 
		End Set
	End Property
 
	Public Property O As TA Implements ITest(Of TA, TB).O
		Get
 
		End Get
		Set(ByVal value As TA)
 
		End Set
	End Property
 
End Class
 
Public Class ExtTest
	Inherits Test(Of X, Button)
 
End Class
 
 
Public Class X
 
End Class
 
#End Region
Dadurch wird klar, dass ich weder ko noch kontravarianz verwenden kann.
Ich verstehe zwar den Grund, wieso der compiler Meckert - dein Beispiel ist einleuchtend. Aber leider kann ich dadurch kein Generics mehr verwenden.
Vielleicht etwas zum Hintergrund: Ich habe ein Programm, dass über Reflection alle Implementierungen der besagten Schnittstelle instanziert. Die Typenparameter für die Schnittstelle sind einmal der Typ für ein Settings-Objekt und der zweite für die GUI (also Control).
Erstelle ich ein Projekt mit einer neue Klasse, die diese Schnittstelle implmeneitiert kann ich innerhalb der Klasse direkt auf die Settings und die GUI (die sich logischerweise auch spezifisch im gleichen Projekt befinden) zugreifen (also über die Properties).
Von außen dachte ich könnte ich immer auf Object / Control zugreifen.
Nun muss ich die Generics entfernen und die Properties Settings und GUI der Schnittstelle auf Object und Control ändern, wodurch beim Implementieren einer solchen Schnittstelle ich intern immer casten muss. Die Generic-Variante fand ich "schöner" ;).

Für andere Tipps bin ich sehr dankbar.
Vielen Dank noch einmal!
Chris

Beitrag wurde zuletzt am 31.08.11 um 19:15:32 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Generischen Typen umwandeln1.814IIIIIChrisIIIII31.08.11 16:23
Re: Generischen Typen umwandeln1.287Preisser31.08.11 18:47
Re: Generischen Typen umwandeln1.107IIIIIChrisIIIII31.08.11 19:12
Re: Generischen Typen umwandeln1.441Preisser31.08.11 21:38
Re: Generischen Typen umwandeln1.038IIIIIChrisIIIII01.09.11 09:02

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel