我还没有找到解决方案来做这样的事情。
假设我有一个地址类
public class Address : IAddress{...}
我有一个 AddressManager 类
public class AddressManager{
public void SaveAddress(Address adress)
{...}
}
我后来现在在 MethodInfo 对象中有这个SaveAddress()方法信息。并且可以根据这些信息创建一个 Action 对象。像这样:
Action<Address> action = (Action<Address>)Delegate.CreateDelegate(typeof(Action<Address>), instance, methodInfo);
然后我可以像这样执行它:
action(parameter);
这很好用,但我的问题是我希望地址是“通用的”,所以我可以发送任何实现IAddress的东西。
我喜欢做这样的事情
Action<IAddress> action = (Action<IAddress>)Delegate.CreateDelegate(typeof(Action<IAddress>), instance, methodInfo);
action(parameter);
但这给了我一个问题,因为它与 methodSignature 不匹配,因为它将地址作为参数。
或者我想这样做(我认为不可能)
Action<parameter.GetType()> action = (Action<parameter.GetType()>)Delegate.CreateDelegate(typeof(Action<parameter.GetType()>), instance, methodInfo);
action(parameter);
有什么好的方法来处理这个吗?