私は、など次のインタフェース、抽象クラスを持っている高度な依存性の注入
public interface IAggregateRootMapping<T> : IAggregateDefinition where T : AggregateRoot
{
IEnumerable<Expression<Func<T, object>>> IncludeDefinitions { get; }
}
public abstract class AggregateRootMapping<T> : IAggregateRootMapping<T> where T : AggregateRoot
{
public abstract IEnumerable<Expression<Func<T, object>>> IncludeDefinitions { get; }
}
public class OrderAggregateRootMapping : AggregateRootMapping<Order>
{
public override IEnumerable<Expression<Func<Order, object>>> IncludeDefinitions
{
get
{
return new Expression<Func<Order, object>>[] {
order => order.Supplier
};
}
}
}
私はこのような別のクラスのものを使用します。私は、依存性注入を使用するにはどうすればよい
public class Repository<TAggregateRoot> : IRepository<TAggregateRoot> where TAggregateRoot : AggregateRoot
{
private readonly AggregateRootMapping<TAggregateRoot> _aggregateRootMapping;
public Repository(AggregateRootMapping<TAggregateRoot> aggregateRootMapping)
{
_aggregateRootMapping = aggregateRootMapping;
}
Do something...
}
を実行時に一致するクラスが挿入されるようにASP.NETコアの? たとえば、AggregateRootタイプのクラスがRepositoryクラスのOrderよりも大きい場合、OrderAggregateRootMappingクラスを注入する必要があります。 .NETコアのStartupクラスのConfigureServicesでServiceCollectionを使用してこれを行うにはどうすればよいですか?