Я не уверен, стоит ли мне задавать этот вопрос здесь, но здесь мы идем, пока при модульном тестировании частного статического метода, в качестве параметра которого используется short, я получаю исключение MissingMethodException, только когда этот параметр равен 0.
Я использую VS 2010 с пакетом обновления 1 (SP1) для платформы Framework 4 (полная версия), здесь приведен минимальный код для воспроизведения этой ошибки (мы обновляем код VB6, поэтому не грубите):
[DataContract]
public enum NotificationResult
{
[EnumMember]
Success,
[EnumMember]
StoredError,
[EnumMember]
InvalidId,
[EnumMember]
OperationError,
}
public sealed class NotificationContext
{
private static NotificationResult GetExecuteResult(short result)
{
NotificationResult executeResult;
switch (result)
{
case 0:
executeResult = NotificationResult.Success;
break;
case 1:
executeResult = NotificationResult.StoredError;
break;
case 2:
executeResult = NotificationResult.InvalidId;
break;
default:
executeResult = NotificationResult.OperationError;
break;
}
return executeResult;
}
}
Вот как я тестирую код:
PrivateType privateHelperType = new PrivateType(typeof(NotificationContext));
var actual = (NotificationResult)privateHelperType.InvokeStatic(
"GetExecuteResult", (short)1);
var actual2 = (NotificationResult)privateHelperType.InvokeStatic(
"GetExecuteResult", (short)0); //here is where i get the exception
В первом вызове я получаю ожидаемый результат, во втором вызове я получаю исключение (я добавил приведение к краткому размышлению, что, возможно, исключение было из-за того, что он не находил метод с int в качестве параметра).
Кто-нибудь может воспроизвести поведение? Я что-то не так делаю?
Спасибо за вашу помощь.