Я пытаюсь решить некоторые проблемы с fxcop, и я действительно запутался в этой проблеме.
В установщике производного класса я проверяю, должно ли быть выполнено присваивание
if (!(value is TypeA))
{
throw new ArgumentException("value is not of TypeA type");
}
_action = (TypeA)value;
FxCop жалуется:
'value', параметр, приведен к типу TypeA несколько раз в методе. Кэшируйте результат оператора as или прямого приведения, чтобы исключить избыточную инструкцию castclass.
НО, в этом примере MSDN (is
определение) Я вижу это:
if (o is Class1)
{
Console.WriteLine("o is Class1");
a = (Class1)o;
}
это то же самое, что я делаю. Итак, есть ли разрешение для этого?
Все, что я могу думать, это:
TypeA tmpAction = value as TypeA;
if(tmpAction == null)
{
throw new ArgumentException();
}
_action = tmpAction;