我想知道这是否正常,假设我的项目中有一个类,在某些时候我需要将一个对象强制转换为这个类或另一个类,但我只能在运行时知道这个,所以在设计时我可以做这样的事吗??
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)
答案 1 :(得分: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。