您好我正在尝试连接ServiceStack
的Ninject适配器。
Ninject有两种解决方法,get和getall。当你试图解决这样的事情列表时,应该使用GetAll:
Interface[] arrayOfInterfaces = _kernel.GetAll(typeof(Interface))
问题是这个和服务堆栈不匹配。我提出了这个解决方案,但我对此并不满意。如何更好地实现这一点的任何帮助或想法将非常感激。
public T Resolve<T>()
{
if (typeof (Array).IsAssignableFrom(typeof (T)))
{
throw new NotSupportedException("Can not resolve array types, use IEnumerable");
}
if (typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(IEnumerable<>))
{
var elementType = typeof(T).GetGenericArguments()[0];
var listOfTypes = Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType)) as IList;
foreach (var o in _kernel.GetAll(elementType))
{
listOfTypes.Add(o);
}
return (T)listOfTypes;
}
return _kernel.Get<T>();
}
目前它仅支持IEnumerable<T>
而不支持T[]