C# 实现接口(如果存在)

C# 实现接口(如果存在),c#,unity3d,dll,interface,C#,Unity3d,Dll,Interface,我想弄清楚在C#中是否有什么可能。我正在为Kerbal太空计划写一个mod/插件,插件是C代码,编写并编译成DLL。DLL放在KSP目录中的文件夹中,KSP在初始化期间加载它们 我希望我的插件中的一个类能够在另一个插件中实现接口,而无需硬依赖。我的插件可以不包含其他插件而包含其他插件,也可以不包含我的插件,但如果两者都存在,则会通过接口公开其他功能 实际上,插件A公开了一组功能,重要的是,它公开了一个接口,它依赖该接口来识别具有特定功能的类 插件B公开了一组不同的功能,但与该接口兼容,并希望实现

我想弄清楚在C#中是否有什么可能。我正在为Kerbal太空计划写一个mod/插件,插件是C代码,编写并编译成DLL。DLL放在KSP目录中的文件夹中,KSP在初始化期间加载它们

我希望我的插件中的一个类能够在另一个插件中实现接口,而无需硬依赖。我的插件可以不包含其他插件而包含其他插件,也可以不包含我的插件,但如果两者都存在,则会通过接口公开其他功能

实际上,插件A公开了一组功能,重要的是,它公开了一个接口,它依赖该接口来识别具有特定功能的类

插件B公开了一组不同的功能,但与该接口兼容,并希望实现它

如何编写这些插件,使它们都不是对另一个的硬依赖,而插件B仍然在其类中使用来自a的接口?我的基本直觉是,接口实际上需要放在一个单独的DLL中,插件a和插件B都依赖于这个DLL,这仍然不理想。我也不确定如果包含接口的DLL包含在内,那么这些将如何交互,因此尝试加载它两次


重要的最后一点:KSP是用Unity编写的,仍然依赖于.net 3.5,因此4+中的附加功能对我不可用。

也许您可以从不同的类公开接口,并让两个插件以这种方式引用同一接口?通过这种方式,它们有一个共同的依赖关系,但它们之间没有直接的依赖关系。另一个是使用反射发现方法。但这是相当脆弱的。共享接口是一个更好的选择。常用的方法是创建一个“共享”库,其他人将依赖该库。如果你想用不同的方式来实现这一点,那么试着为你自己的插件使用Kerbal的API。