【发布时间】:2013-11-24 13:36:22
【问题描述】:
我有两个名为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 的实例,但除此之外它们没有任何共同点。
我想删除重复项,但我不知道该怎么做。
有什么建议吗?
【问题讨论】:
标签: c# code-duplication