我有一个容器类 Foo<TInterface>
它在其构造函数中采用任意接口(interface)类型参数和字符串“strCode”。
在实例化 Foo 时,strCode 通过 CSharpCodeProvider 编译,并且通过反射,适当的类型位于新编译的代码中,然后转换为 TInterface 类型并在 Foo 中提升到属性 TInterface 栏。
这工作正常,客户端可以毫无问题地访问 foo.bar。然而,Foo 还包含(在其他方法中)一个名为 Recompile 的方法,它基本上以上述方式获取并编译新的代码字符串。这也可以正常工作,但这意味着客户端最终会得到一个 Foo API,其中的方法组织如下:
foo.bar.MakeCoffee
foo.bar.DoMagic
foo.Recompile
我宁愿:
foo.MakeCoffee
foo.DoMagic
foo.Recompile
换句话说,我想返回一个具有对通用接口(interface)方法和 Foo API 方法的顶级访问权限的类实例。
理想情况下,返回 Foo<TInterface>
的实例会很好但我知道 C# 泛型不允许这样做。如果需要,我很乐意发布代码,但首先要确保我没有因为 C# 的静态类型性质而找错树。
最佳答案
我认为你必须使用类似 Castle Dynamic Proxy 的代理库或 linfu .
您要实现的目标是什么?你要做AOP吗?
关于c# - 我可以将容器类方法与通用接口(interface)的方法集成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563114/