我有兩個方法稱爲Run
看起來幾乎一模一樣的作品,但它們與不同類型的工作:刪除重複代碼的方法看起來相同,但不同類型的
public string Run<T>(IEnumerable<T> items)
{
// ... Code
var serializer = new ObjectSerializer<T>();
var headers = serializer.SerializeHeaders(items);
// ... Code
foreach (var item in items)
{
var values = serializer.SerializeValues(item);
// ... Code
}
// ... Code
}
public string Run<T>(IEnumerable<Wrapper<T>> items)
{
// ... Code
var serializer = new ObjectWrapperSerializer<T>();
var headers = serializer.SerializeHeaders(items);
// ... Code
foreach (var item in items)
{
var values = serializer.SerializeValues(item);
// ... Code
}
// ... Code
}
public class ObjectSerializer<T>
{
public string[] SerializeHeaders(IEnumerable<T> items) { ... }
public string SerializeValues(T item) { ... }
}
public class ObjectWrapperSerializer<T>
{
public string[] SerializeHeaders(IEnumerable<Wrapper<T>> items) { ... }
public string SerializeValues(Wrapper<T> item) { ... }
}
所有// ... Code
部分是在兩種方法相同。 Wrapper<T>
有一個T的實例,但除此之外它們沒有任何共同之處。
我想刪除重複,但我不知道該怎麼做。
有什麼建議嗎?