Использование динамического в C # для доступа к полю анонимного типа - возможно? - PullRequest
5 голосов
/ 24 мая 2011

У меня есть метод контроллера:

public JsonResult CalculateStuff(int coolArg)
{
    if(calculatePossible)
       return Json(CoolMethod(coolArg));
    else return Json(new { Calculated = false });
}

Теперь я хотел бы проверить это.

public void MyTest
{
    var controller = GetControllerInstance();
    var result = controller.CalculateStuff().Data as dynamic;
    Assert.IsTrue(result.Calculated == false);        
}

Это вызывает исключение RuntimeBinderException, говорящее, что Calculated не определено. Есть ли способ добиться этого?

UPDATE

Следуя совету Джонса, я использовал InternalsVisible для того, чтобы подружиться с моей тестовой сборкой. Все отлично работает Спасибо Джон.

1 Ответ

4 голосов
/ 24 мая 2011

Вы можете сделать это, но только в пределах одной сборки. Анонимный тип внутренний.

Также будет нормально, если вы используете InternalsVisibleTo в своей рабочей сборке для предоставления доступа к вашей тестовой сборке.

...