簡體   English   中英

如何將json字符串轉換為methodinfo參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM