StructureMap
内部型を指定したり、型固有のインターフェイスを作成したりせずに、ネストされたジェネリックを接続する方法があるかどうか疑問に思っています。これは少し紛らわしいので、コーディング例は、探している機能のより良い説明になるかもしれません。
public interface IParser<T> { }
public class Range<T> where T : struct { }
public class RangeParser<T> : IParser<Range<T>> { }
理論的には、次のような StructureMap のオープン ジェネリック機能を使用できるようにしたいと考えています。
For(typeof(IRepository<>)).Use(typeof(Repository<>)).
私はこれを行うことができないことに気づきました:
For(typeof(IParser<Range<>>).Use(typeof(RangeParser<>));
リフレクションを介して実行しようとしましたがMakeGenericType
、そのアプローチで問題が発生しているようです。
var requestedType = typeof(IParser<>).MakeGenericType(typeof(Range<>));
For(requestedType).Use(typeof(RangeParser<>));
どんなアイデアでも大歓迎です。