自动为泛型类提取非泛型接口并将其应用?

时间:2018-11-30 18:41:00

标签: c# generics com-interop auto-generate

是否可以为泛型类/变量自动生成非泛型接口?

这在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或反射之类的编织方法进行思考的原因。


我看到了不涉及此特定情况的相关问题,例如thisthis

0 个答案:

没有答案