我一直在研究一些不同庫的代碼,並注意到有些將在同一個類中提供等價的泛型和非泛型函數。爲什麼使用泛型和非泛型函數變體?
一個例子是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最大化交通方便,也許。沒有這些擔憂,這似乎是冗餘代碼。有什麼我失蹤?