繁体   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