我遇到了一个问题。我在程序中使用了一个提供接口IStreamable的外部库(我没有这个接口的源代码)。
然后,我在我创建的DLL中实现了该接口,DFKCamera类。
在我的当前程序中(不幸的是,我不能完全修改它,因为我只是为其编写插件),我仅能访问在IStreamable接口中定义的DFKCamera方法。然而,我的插件需要访问我在DFKCamera中编写的另一个方法(该程序的其余部分不使用并且未在IStreamable中定义)。
在C#中,是否可以扩展接口的定义?如果我可以扩展IStreamable接口,那么我就可以访问新方法了。
目前情况如下:
然后,我在我创建的DLL中实现了该接口,DFKCamera类。
在我的当前程序中(不幸的是,我不能完全修改它,因为我只是为其编写插件),我仅能访问在IStreamable接口中定义的DFKCamera方法。然而,我的插件需要访问我在DFKCamera中编写的另一个方法(该程序的其余部分不使用并且未在IStreamable中定义)。
在C#中,是否可以扩展接口的定义?如果我可以扩展IStreamable接口,那么我就可以访问新方法了。
目前情况如下:
//In ProgramUtils.DLL, the IStreamable interface is defined
//I have only the .DLL file available
namespace ProgramUtils {
public interface IStreamable {
//some methods
}
}
//In my DFKCamera.DLL
using ProgramUtils;
class DFKCamera: IStreamable {
//the IStreamable implementation code
....
//the new method I wish to add
public void newMethod() {}
//In the the program that uses DFKCamera.DLL plugin
//The program stores plugin Camera objects as IStreamable DLLObject;
IStreamable DLLObject = new DFKCamera();
//This means that I cannot access the new method by:
DLLObject.newMethod(); //this doesn't work!
即使我没有访问IStreamable接口的源代码,是否有一种方法可以使用newMethod声明扩展IStreamable接口?
我知道可以使用部分接口定义来定义跨文件接口,但是只有在这两个文件中都使用partial关键字并且编译为单个.DLL时才有效。
希望我的回答足够清晰明了!