Use*_*ser 3 c# methods proxy dynamic
上下文
我有一个带有方法的C#类PyroProxycall(string method, params object[] arguments)
public class PyroProxy : IDisposable {
public object call(string method, params object[] arguments)
}
Run Code Online (Sandbox Code Playgroud)
这是远程对象的proxist类.
动机
始终使用call方法在代码中看起来不太好.
题
假设PyroProxy类没有方法test_method().如何使以下代码有效?
PyroProxy p = new PyroProxy();
p.test_method();
Run Code Online (Sandbox Code Playgroud)
test_method看起来像的代码
public object test_method(params object[] arguments) {
return call("test_method", arguments); // you get the point
}
Run Code Online (Sandbox Code Playgroud)
这可能是我没有找到的重复,也许在编译时或运行时可能.我能做些什么才能更接近这个目标?提示非常感谢.有关如何注入方法的答案.我找到了ExpandoObject,但它并没有告诉我如何创建未知方法.
您应该派生自然DynamicObject后覆盖该TryInvokeMember方法.
public class PyroProxy : DynamicObject
{
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
Console.WriteLine(binder.Name + " was invoked");
result = call(binder.Name, args);
return true;
}
}
dynamic proxy = new PyroProxy();
proxy.SomeMethod(); //prints "SomeMethod was invoked"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |