using System; namespace Blue { /// /// Service 层注入 /// public class ServiceInjector : AbstractArchitectureComponentInjector { private Type serviceType; /// /// 获取 IService 的类型 /// public ServiceInjector():base(typeof(IService)) { serviceType = typeof(IService); } /// /// 根据类型获取注入的Object /// protected override object GetInjectObject(Type baseType) { object instance= architectureInstance.GetService(baseType); if (instance == null) { var interfaces = baseType.GetInterfaces(); foreach (var type in interfaces) { if (serviceType.IsAssignableFrom(type)&&!serviceType.Equals(type)) { instance = architectureInstance.GetService(type); if (instance != null) { break; } } } } return instance; } } }