3

如果我的服务有一个基类,例如

public abstract class BaseService<T,R> : ServiceStack.ServiceInterface.Service
{
    public R Get(T request)
    {
    }
}

然后服务堆栈崩溃

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

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

4

1 回答 1

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))));
    }
于 2012-12-19T20:54:15.017 回答