大家看一下这段代码:
public interface IServiceProvider
{
// Methods
object GetService(Type serviceType);
}
//--------
public interface IServiceContainer : IServiceProvider
{
// Methods
void AddService(Type serviceType, ServiceCreatorCallback callback);
void AddService(Type serviceType, object serviceInstance);
void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote);
void AddService(Type serviceType, object serviceInstance, bool promote);
void RemoveService(Type serviceType);
void RemoveService(Type serviceType, bool promote);
}
------------
public sealed class ServiceContainer : IServiceContainer, IServiceProvider
{
// Methods
static ServiceContainer();
public ServiceContainer();
public ServiceContainer(IServiceProvider parentProvider);
public void AddService(Type serviceType, ServiceCreatorCallback callback);
public void AddService(Type serviceType, object serviceInstance);
public void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote);
public void AddService(Type serviceType, object serviceInstance, bool promote);
public object GetService(Type serviceType);
public void RemoveService(Type serviceType);
public void RemoveService(Type serviceType, bool promote); // Properties
private IServiceContainer Container { get; }
private Hashtable Services { get; } // Fields
private IServiceProvider parentProvider;
private Hashtable services;
private static TraceSwitch TRACESERVICE;
}
这是.net类库里面的ServiceContainer类的实现情况,
我有个疑问是:
IServiceContainer已经继承了IServiceProvider
ServiceContainer为什么还要继承IServiceProvider接口?
public interface IServiceProvider
{
// Methods
object GetService(Type serviceType);
}
//--------
public interface IServiceContainer : IServiceProvider
{
// Methods
void AddService(Type serviceType, ServiceCreatorCallback callback);
void AddService(Type serviceType, object serviceInstance);
void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote);
void AddService(Type serviceType, object serviceInstance, bool promote);
void RemoveService(Type serviceType);
void RemoveService(Type serviceType, bool promote);
}
------------
public sealed class ServiceContainer : IServiceContainer, IServiceProvider
{
// Methods
static ServiceContainer();
public ServiceContainer();
public ServiceContainer(IServiceProvider parentProvider);
public void AddService(Type serviceType, ServiceCreatorCallback callback);
public void AddService(Type serviceType, object serviceInstance);
public void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote);
public void AddService(Type serviceType, object serviceInstance, bool promote);
public object GetService(Type serviceType);
public void RemoveService(Type serviceType);
public void RemoveService(Type serviceType, bool promote); // Properties
private IServiceContainer Container { get; }
private Hashtable Services { get; } // Fields
private IServiceProvider parentProvider;
private Hashtable services;
private static TraceSwitch TRACESERVICE;
}
这是.net类库里面的ServiceContainer类的实现情况,
我有个疑问是:
IServiceContainer已经继承了IServiceProvider
ServiceContainer为什么还要继承IServiceProvider接口?
ServiceContainer继承IServiceContain后就不能实现IServiceProvider的addService();
函数吗?