我只能用伪代码写这个,因为我不知道正确的语法..如果有的话。
我有一个我想要调用的方法:
JsonConvert.DeserializeObject<Type>(string value);
哪会返回给定的类型。
问题是我不知道如何将类型传递给该方法,因为我不会在构建时知道类型。我的MVC控制器的方法是:
public JsonResult Save(string typeName, string model)
{
// Insert your genius answer here.
}
我需要稍后使用我的类型,以便我可以使用DataContractSerializer来存储它。
任何帮助都将不胜感激。
答案 0 :(得分:1)
如果您在编译时不知道类型,那么您将不得不使用Reflection API来调用该方法。
之前已经回答过,例如,请参阅Jon's Skeet's answer on this question。
答案 1 :(得分:1)
您可以使用Type.GetType()
方法。它有一个重载,它接受string
类型的程序集限定名称,并返回相应的Type
。
您的代码看起来像这样:
public JsonResult Save(string typeName, string model)
{
// My genius answer here
Type theType = Type.GetType(typeName);
if (theType != null)
{
MethodInfo mi = typeof(JsonConvert).GetMethod("DeserializeObject");
MethodInfo invocableMethod = mi.MakeGenericMethod(theType);
var deserializedObject = invocableMethod.Invoke(null, new object[] { model });
}
}