我一直在研究一些不同库的代码,并注意到有些将在同一个类中提供等价的泛型和非泛型函数。为什么使用泛型和非泛型函数变体?
一个例子是Common Service Locator项目的IServiceLocator接口:
public interface IServiceLocator
{
object GetInstance(Type serviceType);
object GetInstance(Type serviceType, string key);
IEnumerable<object> GetAllInstances(Type serviceType);
TService GetInstance<TService>();
TService GetInstance<TService>(string key);
IEnumerable<TService> GetAllInstances<TService>();
}
我得到的印象是,这是从COM最大化交通方便,也许。没有这些担忧,这似乎是冗余代码。有什么我失踪?