1
我想生成一些通用代码,可以从另一个系统生成的文本中创建C#对象。该对象用于方法调用 - 方法调用也将通过反射完成。当我创建此方法参数对象时,我无法弄清楚如何实例化并将值分配给数组类型的属性。我可以在下面的代码示例中使用setValue分配给“name”,但是如何将值分配给数组?使用反射设置对象数组类型的属性值
class Car {
public string name { get; set; }
public Door[] doors { get; set; }
}
class Door {
public int index { get; set; }
public bool isDusty { get; set; }
}
public object createMethodParameter(Vehicle<T> v)
object methodParameter;
Type type = v.GetType();
PropertyInfo[] properties;
MethodInfo[] mi = type.GetMethods();
ParameterInfo[] pi;
foreach (var method in mi)
{
if ("create".Equals(method.Name.ToLowerInvariant())) // look for the create method
{
pi = method.GetParameters();
foreach (var param in pi)
{
returnValue = Activator.CreateInstance(param.ParameterType);
properties = param.ParameterType.GetProperties();
foreach (PropertyInfo property in properties)
{
if (property.PropertyType.IsArray)
{
// how to create the doors array on the car??
}
else
{
property.SetValue(methodParameter, "Porsche", null);
}
}
}
}
}
return methodParameter;
}
那么,你需要得到数组的类型,调用'Array.CreateInstance'或类似的东西,填补了数组,设置属性等你被困在哪一部分? –
“Array.CreateInstance”部分。我以为我需要Activator类。 SLaks的答案帮助了我。我会在几分钟内接受它。 –