Sto tentando di registrare un tipo generico in un file di configurazione per Unity 2.0 ma non riesco a farlo correttamente. Sono stato riferisco alla documentazione di MS qui: http://msdn.microsoft.com/en-us/library/ff660933%28v=PandP.20%29.aspx#_Generic_TypesUnity 2.0 che registra tipi generici via XML
Il codice è simile al seguente:
public interface IRepository<T> where T : class
{
...
}
public class GenericRepository<T> : IRepository<T> where T : class
{
...
}
public class BlogRepository : GenericRepository<BlogRepository>
{
...
}
La configurazione XML che ho in questo momento loks in questo modo:
<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>
Secondo il documentazione per registrare tipi generici si usano parentesi quadre attorno al tipo generico (s), e se il tipo non è un tipo di sistema si fornisce il tipo completo all'interno di più parentesi quadra. Che è quello che ho fatto, penso. Eppure - non funziona.
EDIT: Esempio dal sito MSDN:
<register type="IDictionary[string, [MyApp.Interfaces.ILogger, MyApp]]"/>
L'errore generato è:
Il nome del tipo o alias IRepository non potevano essere risolti. Controlla il tuo file di configurazione e verifica il nome di questo tipo.
Il tuo ultimo commento è stato la soluzione al problema. Stavo cercando di usare la sintassi di scelta rapida negli alias. Grazie. – krisg