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 に答える