用于连接泛型.Net方法参数的条件逻辑

Tel*_*ian 2 .net c# generics conditional

我有一个C#方法,如:

private static IEnumerable<T2> SomeMethod<T1, T2>(IEnumerable<T1> arg1)
{

}
Run Code Online (Sandbox Code Playgroud)

我希望能够做一些条件逻辑,这样如果T1是A,那么T2就是B,依此类推.如果我只有这两个约束,这不是问题.但是,如果我也想要逻辑,如果T1是C然后T2是D.

检查可以在方法中完成,但编译时检查更可取.我想要的是在方法的泛型where语句中指定它.

有没有办法用C#或任何其他.net语言执行此操作?

有关更多信息,T1基本上是一个数据对象,T2是一个与T1数据对象有关的说明符.所有有效的T1都是某个基类,而所有有效的T2都是不同的基类.它们是两个不同的类,但总是一起使用.我试图避免的问题是在代码数据中有一个不同的说明符,它与一起传入的数据不一致.

Jon*_*eet 5

这听起来像你想要的只是在.NET约束中无法表达.听起来事实上你可能会因为简单的超载而变得更好......但我们真的不知道该怎么说.

如果一个方法只适用于几个类型的参数 - 或几个类型参数的组合 - 那么首先它可能不适合作为泛型方法.

编辑:鉴于此信息,它可能更有意义:

有关更多信息,T1基本上是一个数据对象,T2是一个与T1数据对象有关的说明符.所有有效的T1都是某个基类,而所有有效的T2都是不同的基类.

这里的"说明符"你的意思并不是很清楚,但听起来你可能希望用一个与T1相关的接口来表达T2.例如,如果这些是*实际上是"实体"和"装饰器为实体"类型,您可能具有:

private static IEnumerable<T2> SomeMethod<T1, T2>(IEnumerable<T1> arg1)
    where T2 : IDecorator<T1>
Run Code Online (Sandbox Code Playgroud)

...... IDecorator<T>新界面在哪里 同样,仍然没有足够的信息可以说,但这种事情可能是一种有效的方法.