我是否可以定义一个派生自 DynamicObject 并支持接口 (ICanDoManyThings) 的类,而不必实现接口中的每个方法?
我正在尝试创建一个动态代理对象,并希望此类上的方法调用由 MyProxyClass.TryInvokeMember 的实现来处理,这可能会也可能不会将它们传递给包装对象。
这可能吗?
Thanks
即兴界面 http://code.google.com/p/impromptu-interface/正是这样做的,它适用于任何 IDynamicMetaObjectProvider,包括 DynamicObject 子类和 ExpandoObject。
using ImpromptuInterface;
using ImpromptuInterface.Dynamic;
public interface IMyInterface{
string Prop1 { get; }
long Prop2 { get; }
Guid Prop3 { get; }
bool Meth1(int x);
}
...
//Dynamic Expando object
dynamic tNew = Build<ExpandoObject>.NewObject(
Prop1: "Test",
Prop2: 42L,
Prop3: Guid.NewGuid(),
Meth1: Return<bool>.Arguments<int>(it => it > 5)
);
IMyInterface tActsLike = Impromptu.ActLike<IMyInterface>(tNew);
Linfu 实际上不会使用基于 DLR 的对象,而是使用它自己的幼稚后期绑定,这给了它一个SERIOUS性能成本。 Clay 确实使用了 dlr,但您必须坚持使用 Clay 对象,这些对象是为您将所有行为注入到 ClayObject 中而设计的,这并不总是那么简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)