【发布时间】:2014-06-25 16:53:30
【问题描述】:
我有一个对象数组,我想根据使用反射的方法的参数类型将这些对象转换为其实际类型。 字典将根据 json 字符串发生变化。所以我想将对象数组设置为适当的类型以传递调用方法。
这是我的代码。
class Program
{
static void Main(string[] args)
{
try
string json =@"{""Id"":21}";
Dictionary<string, object> paramList = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
Assembly asm = Assembly.GetExecutingAssembly();
Type jobType = (from t in asm.GetTypes()
where t.IsClass && t.FullName == "pathTest.Order"
select t).FirstOrDefault();
MethodInfo infoMethod = jobType.GetMethod("GetOrder");
object jobClassObject = asm.CreateInstance(jobType.FullName);
ParameterInfo[] parameters = infoMethod.GetParameters();
int count = parameters.Count();
Object[] pArray = { };
if (count > 0)
{
pArray = new object[count];
foreach (var methodArg in parameters)
{
var item = paramList.Where(m => m.Key == methodArg.Name).FirstOrDefault();
pArray[methodArg.Position] = Int32.Parse(item.Value.ToString());//hard coded
//Here I want to cast the value based on parameter type .
//parameter type(item.Value.ToString())
}
}
jobType.InvokeMember("GetOrder", BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, jobClassObject, pArray);
}
catch (Exception e)
{
}
Console.ReadLine();
}
}
【问题讨论】:
标签: c# asp.net-mvc-4 reflection