Продолжайте рефакторинг, если можете. Принесение родинок звучит как излишнее убийство, учитывая, что у вас все еще есть возможность внести небольшие изменения в код.
И об этом рефакторинге. Введите новый класс, единственной обязанностью которого будет извлечение столбца из объекта SearchAndExtractReply_2
. Все довольно просто:
public interface IColumnExtractor
{
StringColumn GetPriceColumn(SearchAndExtractReply_2 source,
string columnName);
}
public class ColumnExtractor : IColumnExtractor
{
public StringColumn GetPriceColumn(SearchAndExtractReply_2 source,
string columnName)
{
return (StringColumn)SearchAndExtractReply_2_Extension.GetColumn(source,
columnName);
}
}
Теперь либо предоставьте такой экземпляр класса вашему исходному методу (добавив новый параметр типа IColumnExtractor
), либо предоставьте тот же самый экстрактор для всего класса (например, через внедрение в конструктор ).
public int GetHighestPriorityPriceRecordIndex(
SearchAndExtractReply_2 priceInfoReply, IColumnExtractor columnExtractor)
{
// use extractor object instead of static method
}
Тогда вы можете использовать любой бесплатный фреймворк (например, FakeItEasy или Moq ).