J'essaie d'enregistrer un type générique dans un fichier de configuration pour Unity 2.0 mais je n'arrive pas à le comprendre correctement. J'ai fait référence à la documentation de MS ici: http://msdn.microsoft.com/en-us/library/ff660933%28v=PandP.20%29.aspx#_Generic_TypesUnity 2.0 enregistrement des types génériques via XML
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>
{
...
}
La configuration XML j'ai au moment 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 le documentation pour enregistrer les types génériques vous utilisez des crochets autour du ou des types génériques, et si le type n'est pas un type de système, vous fournissez le type entièrement qualifié à l'intérieur d'un crochet plus carré. C'est ce que j'ai fait, je pense. Pourtant - pas de travail.
EDIT: Exemple à partir du site MSDN:
<register type="IDictionary[string, [MyApp.Interfaces.ILogger, MyApp]]"/>
L'erreur générée est:
Le nom du type ou pseudonyme IRepository n'a pas pu être résolus. Veuillez vérifier votre fichier de configuration et vérifier ce nom de type.
Votre dernier commentaire était les solutions à ce problème. J'essayais d'utiliser la syntaxe du raccourci dans les alias. Merci. – krisg