Non credo sia possibile, ma qui ...Generici C#: è possibile creare un metodo con n Tipi generici ...?
Voglio aggiungere un metodo che possa gestire n numeri di generici. per esempio:
bool<T> MyMethod() where T: Isomething
{
}
lavorerà per un tipo
bool<T,K> MyMethod() where T: Isomething
{
}
lavorerà per due tipi
C'è un modo per lavorare con i tipi n - per esempio
bool<T[]> MyMethod() where T: Isomething
{
}
il motivo che voglio fare questo è quello di implementare un metodo di supporto NHibernate statica che può caricare da più assembly - proprio ora funziona benissimo per un assemblaggio. Il mio metodo attuale è come illustrato di seguito:
public static ISessionFactory GetMySqlSessionFactory<T>(string connectionString, bool BuildSchema)
{
//configuring is meant to be costly so just do it once for each db and store statically
if (!AllFactories.ContainsKey(connectionString))
{
var configuration =
Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(connectionString)
.ShowSql() //for development/debug only..
.UseOuterJoin()
.QuerySubstitutions("true 1, false 0, yes 'Y', no 'N'"))
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<T>();
m.AutoMappings.Add(AutoMap.AssemblyOf<T>().Conventions.Add<CascadeAll>);
})
.ExposeConfiguration(cfg =>
{
new SchemaExport(cfg)
.Create(BuildSchema, BuildSchema);
});
AllFactories[connectionString] = configuration.BuildSessionFactory();
}
return AllFactories[connectionString];
}
dove la linea: m.FluentMappings.AddFromAssemblyOf(), vorrei aggiungere più tipi di esempio
foreach(T in T[]){
m.FluentMappings.AddFromAssemblyOf<T>()
}
Ovviamente questo non potrebbe funzionare non sono completamente muto, ma io non sono così caldo sui farmaci generici - qualcuno può confermare che questo non è possibile :-) ..? Quale sarebbe il modo più elegante per raggiungere questo effetto secondo te ..?
Come nota Jon, questa non è una funzionalità di C# o del sistema di tipo CLR. Se questo tipo di sistema ti interessa, considera la possibilità di leggere su tipi di rango superiore in Haskell. –
@Eric - grazie - Ho appena iniziato a guardare Haskell e sembra una lingua molto interessante. –