2012-09-13 55 views
3

我想知道如果這是好的,可以說我有一個類在我的項目的某個地方,在某些時候我需要將一個對象轉換爲此類類型或另一個,但我可以只有在運行時才知道,所以在設計時我可以做這樣的事情嗎?在運行時動態鑄造vb.net

Dim obj = 'will be assigned something of some type. 
Dim typeObj As Type = Type.GetType("xxxx.Foo") 
Dim fooVar As Foo = CTypeDynamic(obj, typeObj) 

將這項工作作爲讓說:

Dim x As String = "3" 
Dim n As Integer = CType(x, Integer) 
+0

試試看並找出答案。 –

回答

1

您的意思是在運行時創建類的實例?

Dim obj As String = "AssemblyName.YourClassName" 
    Dim typeObj As Type = Type.GetType(obj) 
    Dim fooVar = Activator.CreateInstance(typeObj) 
0

我不知道VB有這樣的關鍵字,在C#中我解決了這種方式:

private static T PrivDynamicCast<T>(object obj) 
{ 
    return (T)obj; 
} 


public static object DynamicCast(object obj, Type targetType) 
{ 
    var dynamicCastMethod = typeof(XType).GetMethod("PrivDynamicCast", BindingFlags.NonPublic | BindingFlags.Static); 
    var tipizedCasteMethod = dynamicCastMethod.MakeGenericMethod(targetType); 
    return tipizedCasteMethod.Invoke(null, new[] { obj }); 
} 

您可以輕鬆地將其轉換爲VB。