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的答案幫助了我。我會在幾分鐘內接受它。 –