2015-01-13 4 views
1

Могу ли я вызвать метод по умолчанию изнутри моего shim как-нибудь?Использование метода по умолчанию использования по умолчанию

Я пробовал это, но он не работает.

ShimConfigurationHelper.GetConfigValueString = (key) { 
    switch (key) 
    {      
     case "SpecialKey": 
      return "some-value-for-testing"; 

     default: 
      return ConfigurationHelper.GetConfigValue(key); 
    } 
}; 

ответ

0

Вы можете размечать участки кода, которые будут выполняться, как если бы они были вне ShimContext так, что они будут использовать оригинальную реализацию. Один из способов сделать это - обернуть код в делегате от вызова до ShimContext.ExecuteWithoutShims. При этом ваш код может выглядеть следующим образом:

ShimConfigurationHelper.GetConfigValueString = (key) { 
    var response=String.Empty; 
    switch (key) 
    {      
     case "SpecialKey": 
      response = "some-value-for-testing"; 
      break; 

     default: 
      ShimsContext.ExecuteWithoutShims(() => { 
       response = ConfigurationHelper.GetConfigValue(key); 
      }); 
      break; 
    } 
    return response; 
};