Autofac.De base.DependencyResolutionException
Autofac newbie désireux de mieux comprendre l'exception suivante, toute aide/conseils sur ce serait très apprécié!
Exception Non Gérée: Autofac.De base.DependencyResolutionException: Aucun des constructeurs trouvé avec les Publics de liaison des drapeaux " sur le type de Test.D'autorisation.LoginService " peut être invoquée avec les services disponibles et les paramètres: Ne peut pas régler le paramètre 'Système.Func`1[Système.IO.Stream] readStream' de constructeur " Void .ctor(Système d'.Func`1[Système.IO.Stream], Système.Func`1[Système.IO.Stream])'. à l'Autofac.De base.Activateurs.De la réflexion.ReflectionActivator.ActivateInstance(IComponentContext contexte, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Activateurs\Réflexion\ReflectionActivator.cs:ligne 117 à l'Autofac.De base.La résolution.InstanceLookup.Activer(IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 79 à l'Autofac.De base.La résolution.InstanceLookup.Execute () \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 62 à l'Autofac.De base.La résolution.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\ResolveOperation.cs:la ligne 124 à l'Autofac.De base.La résolution.InstanceLookup.ResolveComponent(IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:la ligne 115 à l'Autofac.Les fonctionnalités.Les Collections.CollectionRegistrationSource.c__DisplayClass4.c__DisplayClass6.b__1(IComponentRegistration cr) dans \autofac\src\Source\Autofac\Features\Collections\CollectionRegistrationSource.cs:ligne 80 au Système.Linq.Énumérable.WhereSelectArrayIterator`2.MoveNext() au Système.Linq.Tampon`1..ctor(IEnumerable`1 source) au Système.Linq.Énumérable.ToArray[TSource](IEnumerable`1 source) à l'Autofac.Les fonctionnalités.Les Collections.CollectionRegistrationSource.c__DisplayClass4.b__0(IComponentContext c, IEnumerable`1 p) \autofac\src\Source\Autofac\Features\Collections\CollectionRegistrationSource.cs:ligne 80 à l'Autofac.De base.Activateurs.Délégué.DelegateActivator.ActivateInstance(IComponentContext contexte, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Activateurs\Délégué\DelegateActivator.cs:ligne 65 à l'Autofac.De base.La résolution.InstanceLookup.Activer(IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 79 à l'Autofac.De base.La résolution.InstanceLookup.Execute () \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 62 à l'Autofac.De base.La résolution.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\ResolveOperation.cs:la ligne 124 à l'Autofac.De base.La résolution.InstanceLookup.ResolveComponent(IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:la ligne 115 à l'Autofac.De base.Activateurs.De la réflexion.AutowiringParameter.c__DisplayClass2.b__0 () \autofac\src\Source\Autofac\Core\Activateurs\Réflexion\AutowiringParameter.cs:ligne 51 à l'Autofac.De base.Activateurs.De la réflexion.ConstructorParameterBinding.Instancier () \autofac\src\Source\Autofac\Core\Activateurs\Réflexion\ConstructorParameterBinding.cs:ligne 113 à l'Autofac.De base.Activateurs.De la réflexion.ReflectionActivator.ActivateInstance(IComponentContext contexte, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Activateurs\Réflexion\ReflectionActivator.cs:la ligne 119 à l'Autofac.De base.La résolution.InstanceLookup.Activer(IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 79 à l'Autofac.De base.La résolution.InstanceLookup.b__0 () \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 64 à l'Autofac.De base.La durée de vie.LifetimeScope.GetOrCreateAndShare(Guid id Func`1 créateur) dans \autofac\src\Source\Autofac\Core\durée de Vie\LifetimeScope.cs:ligne 269 à l'Autofac.De base.La résolution.InstanceLookup.Execute () \autofac\src\Source\Autofac\Core\Résoudre\InstanceLookup.cs:ligne 64 à l'Autofac.De base.La résolution.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\ResolveOperation.cs:la ligne 124 à l'Autofac.De base.La résolution.ResolveOperation.ResolveComponent(IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\ResolveOperation.cs:ligne 69 à l'Autofac.De base.La résolution.ResolveOperation.Execute(IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Résoudre\ResolveOperation.cs:ligne 96 à l'Autofac.De base.La durée de vie.LifetimeScope.ResolveComponent(IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\durée de Vie\LifetimeScope.cs:la ligne 235 à l'Autofac.De base.Le conteneur.ResolveComponent(IComponentRegistration enregistrement, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\Core\Conteneur.cs:ligne 191 à l'Autofac.ResolutionExtensions.TryResolveService(IComponentContext contexte, Service de Service de, IEnumerable`1 paramètres, Objet& instance) dans \autofac\src\Source\Autofac\ResolutionExtensions.cs:ligne 728 à l'Autofac.ResolutionExtensions.ResolveService(IComponentContext contexte, Service de Service de, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\ResolutionExtensions.cs:ligne 346 à l'Autofac.ResolutionExtensions.Résoudre(IComponentContext contexte, le Type de serviceType, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\ResolutionExtensions.cs:ligne 244 à Autofac.ResolutionExtensions.Résoudre[TService](IComponentContext contexte, IEnumerable`1 paramètres) dans \autofac\src\Source\Autofac\ResolutionExtensions.cs:la ligne 197 à l'Autofac.ResolutionExtensions.Résoudre[TService](IComponentContext contexte, Parameter[] paramètres) dans \autofac\src\Source\Autofac\ResolutionExtensions.cs:la ligne 213
public sealed class AuthorizationModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder
.Register(LoginService)
.AsImplementedInterfaces()
.SingleInstance();
}
static LoginService LoginService(IComponentContext c)
{
var file = c.Resolve<IFile>();
var dataPath = <Some Path>;
return new LoginService
(readStream: () => file.Open(dataPath),
writeStream: () => file.Create(dataPath));
}
}
sealed class LoginService : TLoginService.Iface, IService
{
readonly Func<Stream> _readStream;
readonly Func<Stream> _writeStream;
readonly XmlSerializer _serializer;
public LoginService(
Func<Stream> readStream,
Func<Stream> writeStream
)
{
Contract.Requires(readStream != null);
Contract.Requires(writeStream != null);
_readStream = readStream;
_writeStream = writeStream;
_serializer = new XmlSerializer(typeof (List<LoginRecord>));
}
...
...
OriginalL'auteur theself | 2012-05-21
Vous devez vous connecter pour publier un commentaire.
Votre
LoginService
classe a un constructeur similaire àLoginService(Func<System.IO.Stream> stream)
. Autofac est incapable de créerFunc<System.IO.Stream>
argument. Alors inscrivez-vous de manière appropriée de sorte que Autofac peut créer leLoginService
.Par exemple:
Passer par Enregistrement Du Composant l'article de la Wiki pour trouver la méthode qui vous convient le mieux.
Édité ma réponse. Passer par le wiki de la section de l'Autofac.
Merci! Édité question d'origine et ajouté de l'extrait de code associé à ce problème. L'extrait de code est dans la ligne de ce qui a été suggéré dans un précédent commentaire. C'est un code existant qui je suis nouveau et m'a dit que cela fonctionnait correctement auparavant et, tout récemment, a commencé à générer de la DependencyResolutionException. Cela peut être quelque chose de simple que nous ne sommes pas en mesure d'identifier, de sorte que toute aide serait très appréciée! Merci beaucoup.
OriginalL'auteur Eranga