崩溃,如果我有一个像Servicestack登记泛型类型
public abstract class BaseService<T,R> : ServiceStack.ServiceInterface.Service
{
public R Get(T request)
{
}
}
然后服务栈崩溃为我服务的一个基类
试图加载程序格式不正确。
我认为Servicestack在注册服务时应该忽略抽象泛型类。有没有办法告诉服务栈忽略一些服务类?
崩溃,如果我有一个像Servicestack登记泛型类型
public abstract class BaseService<T,R> : ServiceStack.ServiceInterface.Service
{
public R Get(T request)
{
}
}
然后服务栈崩溃为我服务的一个基类
试图加载程序格式不正确。
我认为Servicestack在注册服务时应该忽略抽象泛型类。有没有办法告诉服务栈忽略一些服务类?
默认情况下,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))));
}
通过将此方法放入我的AppHost.cs(从AppHostBase继承),这也为我解决了这个问题。我必须添加对System.Reflection,ServiceStack.ServiceHost和Funq的引用才能正确解析各种类型。 –
你能与ServiceStack登录问题[项目的GitHub的问题清单(https://github.com/ServiceStack/ServiceStack/issues) – mythz
我工作围绕这通过重命名Get方法在基类GetBase并在调用GetBase方法的deriven类中添加Get方法 – user1661621
听起来不错。您是否可以编辑您的问题以包含此解决方法?谢谢。我会研究防止ServiceStack中的错误。 – mythz