for loop の内側と外側でオブジェクトを作成することに違いはありますか..よくわかりませんが、 forloop の外側で宣言されている oCategoryDefinition でエラーが発生しています:
System.Int32.System.IConvertible.ToType(Type タイプ、IFormatProvider プロバイダー) の System.Convert.DefaultToType(IConvertible 値、Type targetType、IFormatProvider プロバイダー) での 'System.Int32' から 'xxx.CategoryDefinition' へのキャストが無効です。 Convert.ChangeType(オブジェクト値、型変換タイプ、IFormatProvider プロバイダー) Service.AddFeatureValues(VINDescription vinDescription、VehicleDescription vehicleDescription) で
>
for (int i = 0; i < listLength; i++)
{
CategoryDefinition oCategoryDefinition = (CategoryDefinition)Convert.ChangeType
(vehicleDescription.genericEquipment[i].Item, typeof(CategoryDefinition));
vinDescription.StandardFeature.Add(oCategoryDefinition.category.Value);
}
と
CategoryDefinition oCategoryDefinition = new CategoryDefinition();
for (int i = 0; i < listLength; i++)
{
oCategoryDefinition = (CategoryDefinition)Convert.ChangeType
(vehicleDescription.genericEquipment[i].Item, typeof(CategoryDefinition));
vinDescription.StandardFeature.Add(oCategoryDefinition.category.Value);
}
編集
問題に1つの角度を追加するには:以下は、上記のエラーを発生させているメソッドです:
private void AddFeatureValues(VINDescription vinDescription, VehicleDescription vehicleDescription)
{
GenericEquipment[] genericEquipList = null;
//To add standard features to the vehicle details list.
CategoryDefinition oCategoryDefinition = new CategoryDefinition();
try
{
genericEquipList = vehicleDescription.genericEquipment;
if (genericEquipList != null)
{
//Stores the number of items in generic list.
int listLength = genericEquipList.Length;
for (int i = 0; i < listLength; i++)
{
//Casting the object type to CategoryDefinition type.
oCategoryDefinition = (CategoryDefinition)Convert.ChangeType(vehicleDescription.genericEquipment[i].Item,
typeof(CategoryDefinition));
vinDescription.StandardFeature.Add(oCategoryDefinition.category.Value ?? "N/A");
}
}
}
catch (Exception ex)
{
}
}