我想在运行时选择并实例化几个类。例如:
public class MyClassA{
public int property1 {get; set;}
public string property2 {get; set;}
}
public class MyClassB{
public int property1 {get; set;}
public string property3 {get; set;}
}
让我们说,MyClassB是在运行时选择的:
Type t = Type.GetType("MyNamespace.MyClassB");
Object myType = Activator.CreateInstance(t);
现在,我想将myType作为一种类型传递给其他类/方法。
myType myDeserializedObject = JsonConvert.DeserializeObject<myType>(MyJsonString);
代码永远不会编译投掷&#34; myType是一个变量但是像类型一样使用&#34;错误。
是否有任何方法或解决方法将激活的实例转换为类型?如果还有其他方法我应该留意,请告诉我。 谢谢!
答案 0 :(得分:2)
您无法将变量Type
作为通用传递。而是使用
var myDeserializedObject = JsonConvert.DeserializeObject(MyJsonString, t);
答案 1 :(得分:1)
当您将变量声明为类型或使用类型调用泛型方法时,类型检查在编译时完成。如果直到运行时才知道类型,则不起作用。这就是为什么这两个原因:
manage.py migrate bookingservice
......没有编译。编译器不知道要生成myDeserializedObject的类型,并且它不能编译适用于myType的myType myDeserializedObject = JsonConvert.DeserializeObject<myType>(MyJsonString);
版本,除非它知道myType是什么。
有很多方法可以使这项工作,但在某些时候你可能需要做一些类型检查逻辑。也许是这样的:
DeserializeObject<T>