Servicestack注册与泛型类型崩溃

时间:2012-11-28 07:50:59

标签: servicestack

如果我有像

这样的服务的基类
public abstract class BaseService<T,R> : ServiceStack.ServiceInterface.Service
{
    public R Get(T request)
    {
    }
}

然后服务堆栈崩溃

尝试加载格式不正确的程序。

我认为Servicestack在注册服务时应该忽略抽象泛型类。有没有办法告诉servicestack忽略一些服务类?

1 个答案:

答案 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))));
    }