Ich habe eine Factory, die Validator-Instanzen erstellt. Ich gebe ein Objekt zur Validierung ein und es gibt mir den Validator, den ich verwenden kann, um es zu validieren.Autofac-Factory, die Instanzen ohne Abhängigkeit vom Container behebt
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;
}
}
Es funktioniert, aber ich brauche IComponentContext
in den Behälter zu übergeben.
Gibt es einen besseren Weg, wo ich das nicht tun muss?
Autofac hat "Implicit Relationship Types" aber ich bin unsicher, wie man sie hier verwendet, da der Typ nur zur Laufzeit bekannt sein würde.
[Referenz für "automatisch generierte Fabrik"] (https://autofac.readthedocs.io/en/latest/resolve/relationships.html#parameterized-instantiation-func-x-y-b) "parametriert Instanziierung" mit – grokky