1
我有一個對象數組,我想基於使用反射的方法的參數類型將這些對象轉換爲其實際類型。 字典將根據json字符串進行更改。因此,我想將對象數組設置爲適當的類型以傳遞invoke方法。使用反射基於參數類型轉換值
這是我的代碼。
class Program
{
static void Main(string[] args)
{
try
string json [email protected]"{""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();
}
}