C#泛型 - 可以用n个泛型类型创建一个方法..?

Mar*_*k D 5 .net c# generics nhibernate

我不认为这是可能的,但这里......

我想添加可以处理泛型的数字的方法.例如 :

bool<T> MyMethod() where T: Isomething
{
}
Run Code Online (Sandbox Code Playgroud)

将适用于一种类型

bool<T,K> MyMethod() where T: Isomething
{
}
Run Code Online (Sandbox Code Playgroud)

将适用于两种类型

有没有办法处理n种类型 - 例如

bool<T[]> MyMethod() where T: Isomething
{
}
Run Code Online (Sandbox Code Playgroud)

我想要这样做的原因是实现一个静态的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];
    }
Run Code Online (Sandbox Code Playgroud)

在哪一行:m.FluentMappings.AddFromAssemblyOf(),我想添加多个类型,例如

foreach(T in T[]){
   m.FluentMappings.AddFromAssemblyOf<T>()
Run Code Online (Sandbox Code Playgroud)

}

显然这不起作用我不是完全愚蠢,但我对泛型不太热 - 有人可以确认这是不可能的:-) ..?在您看来,实现这种效果最优雅的方式是什么?

Jon*_*eet 7

否 - 泛型类型和方法的优点是基于每种类型/方法修复的.

这就是为什么有所有不同Action<...>,Func<...>Tuple<...>类型的框架.

偶尔这是一种耻辱,但它相对很少会受到影响,我怀疑各种各样的事情会变得更加复杂.