C# WPF アプリケーションで発生している InvalidCastException はどのように発生していますか?
問題のある行を「cacheConsumptionStatus = ConsumptionStatusType.GetByKey(Convert.ToInt32(value));」から変更しようとしました。「cacheConsumptionStatus = (ConsumptionStatusType.)value;」に、結果は同じです。
その行を完全にコメントアウトしても結果は同じです。
「cache」は BitArray 型、「hasValue」は bool、「value」はオブジェクトです。
関連コード:
Message.cs
...
switch(propID)
{
...
case 968:
cache[9] = hasValue;
if (hasValue)
{ <-- InvalidCastException -- Unable to cast object of type 'System.Int32' to type 'Enumerations.ConsumptionStatusType'.
cacheConsumptionStatus = ConsumptionStatusType.GetByKey(Convert.ToInt32(value));
}
videoManagerRef.events.FireOnMessageConsumptionStatus(this, cacheConsumptionStatus);
break;
...
ConsumptionStatusType.cs
using System.Collections.ObjectModel;
namespace Enumerations
{
public class ConsumptionStatusType : EnumBase<ConsumptionStatusType>
{
public static readonly ConsumptionStatusType CONSUMED = new ConsumptionStatusType(0, "CONSUMED");
public static readonly ConsumptionStatusType UNCONSUMED_SUPPRESSED = new ConsumptionStatusType(1, "UNCONSUMED_SUPPRESSED");
public static readonly ConsumptionStatusType UNCONSUMED_NORMAL = new ConsumptionStatusType(2, "UNCONSUMED_NORMAL");
public static readonly ConsumptionStatusType UNCONSUMED_ELEVATED = new ConsumptionStatusType(3, "UNCONSUMED_ELEVATED");
public ConsumptionStatusType(int key, string value)
: base(key, value)
{
}
public static ReadOnlyCollection<ConsumptionStatusType> GetValues()
{
return GetBaseValues();
}
public static ConsumptionStatusType GetByKey(int key)
{
return GetBaseByKey(key);
}
}
}