是否可以为泛型类/变量自动生成非泛型接口?
这在COM-interop方案中很有用,在该方案中,通用类型从COM typelib中排除。但是如果同一类实现了非通用接口,则可以通过该接口访问该类型的对象。
显然,可以手动创建这样的界面,但是我当前的项目中有很多这样的界面,因此很不方便。同样,自动生成的样板代码不太可能出现错误(IMO)。
一个典型的例子是:
class Foo<T>
{
public T F { get; set;}
}
...
Foo<int> f; // <== Is there any way to generate a nongeneric interface for Foo<int> ?
此示例的相应界面如下:
interface IFooInt
{
public int F { get; set;}
}
当然Foo
可以是Dictionary
或其他任何东西。
我愿意接受使用反射或编织(la Fody),使用某些工具进行后处理步骤,使用反射进行某种方式的半手动处理等想法。
除了编写实际的接口本身之外,它还必须重新将该接口重新构造为原始的通用类Foo<int>
;这就是为什么我一直在按照Fody或反射之类的编织方法进行思考的原因。