3

我想知道这是否可以,假设我的项目中有一个类,在某些时候我需要将一个对象强制转换为此类类型或其他类型,但我只能在运行时知道这一点,所以在设计时我可以做这样的事情吗?

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) 
4

2 回答 2

1

你的意思是在运行时创建一个类的实例吗?

    Dim obj As String = "AssemblyName.YourClassName"
    Dim typeObj As Type = Type.GetType(obj)
    Dim fooVar = Activator.CreateInstance(typeObj)
于 2013-03-25T10:41:37.847 回答
-1

我不知道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。

于 2014-06-26T15:56:43.817 回答