2016-02-09 2 views
0

Как справиться с ситуацией, когда тип получил виртуальный метод, и мне нужно предоставить Shim вместо этого?Как пробить виртуальный метод?

У меня есть контракт данных, с кодом:

public class ServiceResponse 
{ 
    ... 
    public virtual string Serialize() {...} 
    ... 
} 

В моем коде есть вызов response.Serialize(), где response является типом ServiceResponse.

В моем тестовом модуле я хотел бы сделать что-то вроде этого:

ShimServiceResponse.Serialize =() => { return "serialized response"; }; 

Но в то время как метод Serialize является virtual, тип ShimServiceResponse не обеспечивает Serialize способ быть «подкладками».

Каков наилучший способ решить эту проблему? Благодарю.

Я использую Microsoft Подделки Framework, .NET 4.5.2 и VS 2015

ответ

0

Managed работать это путем создания ребенка class и первостепенную Serialize метод.

class ServiceResponseChild : ServiceResponse 
{ 
    public override string Serialize() 
    { 
     return "orgUnitsResponse serialized"; 
    } 
} 

Позже в моих тестах, я использую этот ребенок class.

... 
ServiceResponse response = new ServiceResponseChild(); 
target.SaveResponseAsXml(response); 
... 

Хотя это работает для меня, было бы интересно использовать другие решения, используя возможности MS Fakes (если возможно).

 Смежные вопросы

  • Нет связанных вопросов^_^