我可以将容器类方法与通用接口的方法集成吗

本文关键字:接口 方法 集成 类方法 我可以 | 更新日期: 2023-09-27 18:00:54

我有一个容器类Foo<TInterface>,它在构造函数中接受任意接口类型参数和字符串"strCode"。

在实例化Foo时,通过CSharpCodeProvider编译strCode,并通过Reflection将适当的类型定位在新编译的代码中,然后转换为TInterface类型,并在Foo中提升到属性TInterface栏。

这很好,客户端可以访问foo.bar,没有问题。然而,Foo还包含一个名为Recompile的方法(以及其他方法(,该方法基本上以上述方式获取并编译新的代码字符串。这也很好,但这意味着客户端最终会得到一个Foo API,其中的方法组织方式类似于:

foo.bar.MakeCoffee
foo.bar.DoMagic
foo.Recompile

我更喜欢:

foo.MakeCoffee
foo.DoMagic
foo.Recompile

换句话说,我想返回一个类实例,该类实例具有对通用接口方法和Foo API方法的顶级访问权限。

理想情况下,返回Foo<TInterface>的实例会很好,但我知道C#泛型不允许这样做。如果需要的话,我很乐意发布代码,但首先要确保我不会因为C#的静态类型性质而找错树。

我可以将容器类方法与通用接口的方法集成吗

我认为您必须使用像Castle Dynamic proxy或linfu这样的代理库。

你想要达到的目标是什么?你想做AOP吗?

相关文章: