2009-07-02 29 views
5

VB.NET'te aşağıdaki gibi bir şey yapmak istiyorum, bu mümkün mü?Bir "tür" argüman olarak geçebilir misiniz?

Function task(value as Object, toType as Type) 

    Return DirectCast(value, toType) 

End Function 
+1

Eğer * önce nesneyi döküm yok Neden * göndermeden Görev işlevi – Juliet

+0

Bu açık bir çözüm değil mi ?! –

cevap

12

Evet. System.Type var. Aslında bir Jenerik yapmak isteyebilirsiniz.

Function SomeFunction(Of T)(obj As Object) As T 
    '' Magic 
End Function 
+0

Oh doh. C# bugünlerde çok alışkınım. –

2

Eğer

function task(of myType)(value as myType) as MyType 
    ''stuff 
    return value 
end function 
0

Evet, ama, sizin gereksinimlerine bağlı olarak, herhangi bir tür döküm/dönüştürme yapmak için CType kullanmak isteyebilirsiniz kullanmak istiyorum. CType, geçerli bir tip dönüşümü olduğu sürece çalışacaktır, DirectCast ise 'un toType türünde olmasını gerektirir. Böyle

Public Sub BindListControlToEnum(Of T)(ListCtrl As ListControl) 
    Dim itemValues As Array = System.Enum.GetValues(GetType(T)) 
    Dim itemNames As Array = System.Enum.GetNames(GetType(T)) 
    For i As Integer = 0 To itemNames.Length - 1 
     Dim item As New ListItem(itemNames(i), itemValues(i)) 
     ListCtrl.Items.Add(item) 
    Next 
End Sub 

Çağrı it: -

2

Mükemmel Yanıt Burada aynı şeyi genel bir işlevdir

BindDropdownToEnum(Of MyClass.MyEnum)(MyRadioButtonListControl) 
İlgili konular