Action <t>其中T是接口</t>

时间:2013-10-22 11:53:32

标签: .net

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

说我有一个地址类

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

这很好,但我的问题是我希望地址“generic”所以我可以发送任何实现 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);

有没有什么好方法可以解决这个问题?

0 个答案:

没有答案