我希望将以下方法通用化,该方法使用搜索服务进行搜索,所有可能的URL都在一个字典中。
public XDocument DoSearchForTypeA()
{
return searchService.Search(dictionary["optiona"]);
}
public XDocument DoSearchForTypeB()
{
return searchService.Search(dictionary["optionb"]);
}
我在考虑做类似于这样的事情:
public XDocument DoSearch<T>()
{
if(typeof(T)==typeof(MyTypeA))
{
return searchService.Search(dictionary["optiona"]);
}
return searchService.Search(dictionary["optionb"]);
}
我觉得我的解决方案很糟糕。主要是因为我不喜欢每种类型都要用开关或者if语句进行解析。这使得代码在扩展时不太灵活。
我希望有一个更优雅的解决方案,但我感觉这不是使用通用方法的最佳示例。您能给我一些关于反射的建议吗?
DoSearch<string>
来调用它会发生什么?在编译器看来,这是合法的代码,但最终会搜索错误的字典(很可能)。这是你想要的吗?你为什么觉得有必要进行组合? - Lasse V. Karlsen