Unity 2.0 enregistrement de types génériques via XML
Je suis en train d'enregistrer un type générique dans un fichier de config pour l'Unité 2.0, mais n'arrive pas à obtenir ce droit. J'ai fait allusion à la MS de la documentation ici : http://msdn.microsoft.com/en-us/library/ff660933%28v=PandP.20%29.aspx#_Generic_Types
Le code ressemble à ceci:
public interface IRepository<T> where T : class
{
...
}
public class GenericRepository<T> : IRepository<T> where T : class
{
...
}
public class BlogRepository : GenericRepository<BlogRepository>
{
...
}
Le XML de config que j'ai en ce moment l'île loks comme ceci:
<unity>
<!-- Aliases -->
<alias alias="BlogIRepository"
type="X.Services.Interfaces.IRepository[[X.Domain.Entities.Blog, X.Domain]], X.Services"/>
<alias alias="BlogRepository"
type="X.Repositories.BlogRepository, X.Repositories"/>
<!-- Type registration -->
<container name="development">
<!-- Common connection string value -->
<instance name="Conn" type="System.String" value="blahblahblah"/>
<register type="BlogIRepository" mapTo="BlogRepository">
<constructor>
<param name="connectionString" type="System.String" dependencyName="Conn"/>
</constructor>
</register>
</container>
</unity>
Selon les documents pour vous inscrire types génériques vous utilisez des crochets autour du type générique(s), et si le type n'est pas un type de système de vous fournir le type pleinement qualifié à l'intérieur de plus de crochet. Qui est ce que j'ai fait, je pense. Encore aucune worky.
MODIFIER: l'Exemple de la le site MSDN:
<register type="IDictionary[string, [MyApp.Interfaces.ILogger, MyApp]]"/>
L'erreur générée est:
Le type, nom ou alias IRepository n'a pas pu être résolu. Veuillez vérifier votre fichier de configuration et de vérifier ce type de nom.
source d'informationauteur krisg
Vous devez vous connecter pour publier un commentaire.
MSDN n'est PAS faux. Plus précisément, nous avons ajouté un peu de raccourci règles d'analyse de sorte que vous n'avez pas à saisir tous les `s et des crochets dans la plupart des cas.
J'ai giflé un exemple qui ressemble surtout comme la vôtre:
Mon XML de config ressemble à ceci:
et il fonctionne, tout simplement.
Étiez-vous, par hasard, essayez d'utiliser un alias pour IRepository à la place de l'espace de noms /assemblée de recherche? J'ai eu la suite de travailler aussi bien à l'aide d'alias:
Lorsque vous spécifiez le type pour un alias, vous doit utiliser le CLR type de syntaxe. Partout ailleurs, vous pouvez utiliser le générique de raccourci de la syntaxe.
vous êtes en manque un " caractère avant
[[
(ci-dessous Esc sur mon clavier)Je pense que vous avez besoin d'ajouter " 1, comme le montrent les exemples ici sur MSDN suggère: