Дженерики C # - можно ли создать метод с n универсальными типами ..?

Я не думаю, что это возможно, но вот ...

Я хочу добавить метод, который может обрабатывать 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>()

}

Очевидно, это не сработает Я не совсем тупой но я не в восторге от дженериков - может кто-нибудь подтвердить, что это невозможно :-) ..? Каким, на ваш взгляд, будет наиболее элегантный способ добиться этого эффекта? ?

5
задан Mark D 15 September 2010 в 11:14
поделиться