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;
}
}
}