我将使用 AppDomains 来管理不同程序集中的对象,例如:
object _Instance = _AppDomain.CreateInstanceFromAndUnwrap(assemblyFileNamePath, typeName);
我定义了一个这样的接口(interface)
interface IInvokable { int Invoke(string[] args); }
这样我就可以在任何实现它的对象上调用方法
(_Instance as IInvokable).Invoke(new string[]{methodName,parameters});
我不喜欢这样,因为 AFAIK 我生成的任何程序集都必须引用我定义 IInvokable 的程序集
问题:是否有任何内置接口(interface)可供我使用,可能是专门用于此目的或用于用户定义目的的接口(interface)。我也愿意接受有关如何解决问题的其他建议。
最佳答案
即使有这样的接口(interface),使用它也是一个坏主意。每个接口(interface)都是一个契约,并且具有意义。接口(interface)的定义可能会随着时间而改变。例如,在 .NET 中,具有相同成员的不同接口(interface),但具有不同的名称、命名空间和程序集。当您的旧 WPF .NET 4.0 应用程序在升级到 .NET 4.5 时无法编译时,我们已经看到 .NET 4.5 中的向后不兼容更改。所以我个人建议坚持你目前的方法。
但是,如果您仍然想按照自己的方式进行操作,那么您可以尝试 ICommand 并使用 Func
而且我也不建议像 ta.speot.is 所建议的那样做一个额外的反射操作,因为反射操作对计算资源来说很困难并且类型安全性较低(你会丢失一些编译时检查)。
熟悉 MEF 也会对您有所帮助。 .
关于interface - .NET Framework 内置的通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521194/