2009-05-20 8 views
1

In der Codebasis ich dort arbeiten, haben eine Methode, die die SignaturWie wird ein Objekt in ein Nullable vom Typ struct umgewandelt?

Public Sub SetDropDownValue(Of T As Structure)(ByVal target As ListControl, ByVal value As Nullable(Of T)) 

Verfahren I ist ein Parameter des Typs Objekt übergeben schreibe hat.

Wie kann ich das Objekt in etwas umwandeln, das an die SetDropDownValue-Methode übergeben werden kann?

Antwort

0

Nein, Sie können einen Referenztyp nicht als Wertetyp (der Structure-Wert) signalisieren. Mit der CLR können Sie einen Wertetyp als Referenztyp (dies ist bekannt als Boxen) aber die Art der Unterschied zwischen der Implementierung (und Semantik) dieser zwei verschiedenen Typen macht das Gegenteil unmöglich.

Der einzige Gedanke, den Sie tun könnten, wäre, einen Werttyp zu erstellen, der einen Verweis auf Ihr Objekt als Feld enthielt, aber vielleicht ist dieses Problem ein Hinweis darauf, dass Sie die ganze Sache falsch machen.

+0

Ich begann zu denken, dass der Code ein bisschen stinkt. Zeit zum Umdenken. – ilivewithian

0

sollte diese Arbeit, wenn Sie T wissen:

something.SetDropDownValue(target, DirectCast(value, Nullable(Of T))) 

für Details dieses article See.

Wenn Sie den Typ T nicht kennen, sind Sie in Schwierigkeiten und müssten zur Laufzeit mit Reflektion herumfummeln. Das ist komplex, gefährlich und hat eine schreckliche Leistung.

Verwandte Themen