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