実行時にそれ自体を解決するジェネリックデリゲートを登録したいのですが、ジェネリックでこれを行う方法が見つかりません。オープンなジェネリックデリゲートをautofacに登録することはできますか?
public delegate TOutput Pipe<in TInput, out TOutput>(TInput input);
そして、このようになり、離散的に登録されたデリゲート与えられた:私はこの線に沿って機能を登録する
public class AnonymousPipe<TInput, TOutput>
{
public Pipe<TInput, TOutput> GetPipe(IContext context)
{...}
を:
次のようになりますデリゲートを考える
builder.RegisterGeneric(typeof(Pipe<,>)).As(ctx =>
{
var typeArray = ctx.RequestedType.GetGenericArguments();
// this can be memoized
var pipeDefinition = ctx.Resolve(typeof(AnonymousPipe<,>).MakeGenericType(typeArray));
return pipeDefinition.GetPipe(ctx);
ジェネリックの実装をparameとして提供する方法が見つかりませんAutofacのter - 私は何かが欠けているかもしれません。私は一般的なオブジェクトやインターフェイスを通してこれを行うことができますが、私はデリゲートの軽さにこだわりたいと思います。ユニットテストは、これらの注入に非常に簡単です。
どのような考えですか?私は現時点で個別の登録をしなければなりません(タイプの組み合わせごとに1つ、ジェネリックはありません)。
私は登録のみソースソリューションを考え出すことができる
Wow Steve、このような挑戦を設定することを信頼してください:) :) Hmmmmmmmmmm thインキング思考... –