崩潰,如果我有一個像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