Hier j'ai implémenté le code:
CustomerProductManager productsManager = container.Resolve<CustomerProductManager>();
C'était compilable et fonctionnel.
Aujourd'hui (j'ai probablement modifié quelque chose), je reçois constamment l'erreur:
La méthode non générique 'Microsoft.Practices.Unity.IUnityContainer.Resolve (System.Type, Chaîne, paramètres Microsoft.Practices.Unity.ResolverOverride [])' ne peut pas être utilisé avec des arguments de type
Mon collègue a le même code source et n'a pas la même erreur. Pourquoi? Comment résoudre le problème?
P.S.
ligne "using Microsoft.Practices.Unity;" est présent dans la section usings.
J'ai essayé de remplacer la version générique par une non générique:
CustomerProductManager productsManager = (CustomerProductManager)container.Resolve(typeof(CustomerProductManager));
Et a une autre erreur:
Pas de surcharge pour la méthode 'Résoudre' prend Arguments '1'
Il semble que l’un des assemblys n’est pas référencé .. mais lequel? J'ai 2 d'entre eux référencés: 1. Microsoft.Practices.Unity.dll 2. Microsoft.Practices.ServiceLocation.dll
P.P.S. J'ai rencontré un problème similaire http://unity.codeplex.com/WorkItem/View.aspx?WorkItemId=8205 mais il est résolu comme "pas un bogue"
Toute pensée sera utile
J'ai eu le même problème et j'ai trouvé le «correctif» en regardant les exemples de fichiers de code Prism. Même si ce n’est pas une dll dans Unity V2, vous devez ajouter une référence dans votre classe à: Microsoft.Practices.Unity
ma section "utilisation" complète est la suivante
using System;
using System.Windows;
using Microsoft.Practices.Composite.Modularity;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Composite.UnityExtensions;
Je ne sais pas si vous utilisez Silverlight, mais la version générique de Container.ResolveESTdans Microsoft.Practices.Unity.
Microsoft ne possède plus Unity et il est dans la version 5, l'espace de noms est maintenant:
using Unity;
Assurez-vous que cela se trouve dans votre section using lorsque vous utilisez:
container.Resolve<T>();
J'ai fait face à ce problème et aucune de ces réponses ne m'a pas aidé. Je recevais l'erreur de temps de compilation
Méthode inconnue RegisterType () de Microsoft.Practices.Unity.IUnityContainer
pour mon code ci-dessous.
Container.RegisterType<MyInterface, MyClass>();
J'ai constaté que si vous n'aviez pas implémenté IMyInterface
dans la classe MyClass
, vous rencontriez ce problème. J'espère que ça résoudra pour vous aussi ...
Dans mon cas, Bootstrapper avait mis en œuvre sa propre résolution sans la version générique, de sorte qu'il ne pouvait pas trouver la résolution unitaire de Microsoft. L'ajout des utilisations appropriées a fait l'affaire.
Dans ma situation, la classe que je recouvrais avec Unity hérité d'une classe de base abstraite et cette classe de base n'avaitPASun constructeur sans paramètre. Une fois que j'ai changé mon code pour utiliser un constructeur sans paramètre pour la classe de base, le problème a disparu.