1

我还没有找到解决方案来做这样的事情。

假设我有一个地址类

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);

有什么好的方法来处理这个吗?

4

0 回答 0