我正在创建一个项目,我在其中创建了自己的类,但现在我需要支持插件。所以我需要一个接口然后导出为dll,这样人们就可以使用该dll作为接口创建插件。 现在我想要创建的插件能够使用我的自定义类型。
例如:
我的项目有一个名为Product的类。 然后我使用以下方法创建了一个接口:
Product[] getProducts();
然后,创建插件的用户将覆盖该方法,并且需要具有对Product类的访问权限。 我怎么会这样做?
我尝试将整个项目编译为.dll,但这只会产生很多错误。 我还尝试将必要的项目文件编译为.dll,但我的项目几乎涉及所有部分,因此它仍然存在错误。
我想谷歌,但我不知道谷歌的用途。
感谢。
修改 我正在使用Visual C#2013快递版。
答案 0 :(得分:0)
创建一个仅包含接口的单独项目。您的主要产品将引用此程序集,扩展程序也将引用此程序集。
例如,假设您希望扩展提供返回IEnumerable的方法GetAnimals()。您的第二个项目将包含如下所示的界面:
public interface IAnimal
{
UInt32 Height { get; }
}
public interface IExtension
{
IEnumerable<IAnimal> GetAnimals();
}
该项目将是类型类库,并且只包含这些接口。该项目不引用您的主项目。您的主项目将引用此类库,您可以将类库提供给您的用户/客户/扩展器,他们可以通过实现IExtension来构建扩展。
更新:进行扩展的关键是您的用户永远不会直接访问您的任何具体类型。它们始终只能访问您的具体类型实现的接口。您需要构建应用程序以使所有内容具有接口层次结构,以便您可以向用户提供这些接口。您希望避免将任何具体类型放入扩展类库中。