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