[英]How to convert json string to methodinfo parameter?
我正在嘗試將json
字符串轉換為MethodInfo
參數類型。 我有以下幾點:
Type type = typeof(MyClass);
MethodInfo mi = type.GetMethod(myMethod);
ParameterInfo [] parameteres=mi.GetParameters();
var jsonString="{\"LastName\":\"Test\"}"
使用這些代碼,我得到了mymethod
的輸入類型,它是一個包含名為LastName
的屬性的類(類名稱為Class1
)。
現在如何將jsonString
轉換為Class1
。
提示:我們在運行時得到Class1
類型。
因此,ParameterInfo calss具有其自己的屬性ParameterType。 您應該獲得此參數和一些庫才能與Json一起使用,例如https://www.nuget.org/packages/Newtonsoft.Json/
然后代碼會像
Type type = typeof(MyClass);
MethodInfo mi = type.GetMethod(myMethod);
ParameterInfo [] parameteres=mi.GetParameters();
ParameterInfo myParameter = parameteres.FirstOrDefault();
var jsonString="{\"LastName\":\"Test\"}"
var myObjParameter = JsonConvert.DeserializeObject(jsonString, myParameter.ParameterType );
//Then create an objevt of main class.
ConstructorInfo constr = type .GetConstructor(Type.EmptyTypes);
object classInstance = constr.Invoke(new object[]{});
//And call method for this object
mi .Invoke(classInstance , new object[]{ myObjParameter });
假設您的課程看起來像這樣
public class MyClass
{
public string LastName { get; set; }
private void myMethod(string LastName)
{
//do sutff
}
}
您可以像這樣簡單地反序列化字符串(可以使用Json.NET )
var jsonString = "{\"LastName\":\"Test\"}";
var lastName = JsonConvert.DeserializeObject<MyClass>(jsonString);
現在您可以根據需要動態或靜態使用lastName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.