如果我有像
这样的服务的基类public abstract class BaseService<T,R> : ServiceStack.ServiceInterface.Service
{
public R Get(T request)
{
}
}
然后服务堆栈崩溃
尝试加载格式不正确的程序。
我认为Servicestack在注册服务时应该忽略抽象泛型类。有没有办法告诉servicestack忽略一些服务类?
答案 0 :(得分:2)
默认情况下,ServiceStack将程序集中的所有类型都包括为服务的候选者。它在尝试实例化类时会得到异常。
通过覆盖主机类中的CreateServiceManager,您可以注入自己的类型过滤,以便排除抽象和未闭合的泛型。
protected override ServiceManager CreateServiceManager(params Assembly[] assembliesWithServices)
{
return new ServiceManager(
new Container(),
new ServiceController(
() =>
assembliesWithServices.SelectMany(
assembly => assembly.GetTypes().Where(t => !t.IsAbstract && !t.IsGenericTypeDefinition))));
}