1
私はバリデータインスタンスを作成するファクトリを持っています。検証するオブジェクトを渡し、検証するために使用できるバリデータを提供します。コンテナに依存せずにインスタンスを解決するAutofacファクトリ
public class ValidatorFactory : IValidatorFactory
{
public ValidatorFactory(IComponentContext container) { _container = container; }
private readonly IComponentContext _container;
public IValidator create(object objectToValidate)
{
var validatorType = typeof(IValidator<>).MakeGenericType(new Type[] { objectToValidate.GetType() });
object validator;
_container.TryResolve(validatorType, out validator);
return validator as EntityValidatorI;
}
}
これは動作しますが、私はコンテナIComponentContext
を渡す必要があります。
私はそれを行う必要がないより良い方法はありますか?
Autofacには"Implicit Relationship Types"がありますが、タイプは実行時にしか分かりませんので、ここでどのように使用するかは分かりません。
[ "自動生成工場" の参照](https://autofac.readthedocs.io/en/latest/resolve/relationships.html#parameterized-instantiation-func-x-y-b) – grokky