Я не думаю, что это возможно, но здесь идет ...
Я хочу добавить метод, который может обрабатывать n числовых выражений. например:
bool<T> MyMethod() where T: Isomething
{
}
будет работать для одного типа
bool<T,K> MyMethod() where T: Isomething
{
}
будет работать для двух типов
Есть ли способ работы с n типами - например,
bool<T[]> MyMethod() where T: Isomething
{
}
причина, по которой я хочу это сделать, - реализовать статический вспомогательный метод nhibernate, который может загружаться из нескольких сборок - сейчас он отлично работает для одной сборки. Мой текущий метод, как показано ниже:
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];
}
Где строка: m.FluentMappings.AddFromAssemblyOf (), я хотел бы добавить несколько типов, например
foreach(T in T[]){
m.FluentMappings.AddFromAssemblyOf<T>()
}
Очевидно, что это не могло сработать. Я не совсем тупой, но я не настолько увлечен дженериками - может кто-нибудь подтвердить, что это невозможно :-) ..? Какой, по вашему мнению, самый элегантный способ достижения этого эффекта??