C#在具有自定义变量类型的现有项目中将接口导出为dll

时间:2014-09-19 22:07:18

标签: c# plugins

我正在创建一个项目,我在其中创建了自己的类,但现在我需要支持插件。所以我需要一个接口然后导出为dll,这样人们就可以使用该dll作为接口创建插件。 现在我想要创建的插件能够使用我的自定义类型。

例如:

我的项目有一个名为Product的类。 然后我使用以下方法创建了一个接口:

Product[] getProducts();

然后,创建插件的用户将覆盖该方法,并且需要具有对Product类的访问权限。 我怎么会这样做?

我尝试将整个项目编译为.dll,但这只会产生很多错误。 我还尝试将必要的项目文件编译为.dll,但我的项目几乎涉及所有部分,因此它仍然存在错误。

我想谷歌,但我不知道谷歌的用途。

感谢。

修改 我正在使用Visual C#2013快递版。

1 个答案:

答案 0 :(得分:0)

创建一个仅包含接口的单独项目。您的主要产品将引用此程序集,扩展程序也将引用此程序集。

例如,假设您希望扩展提供返回IEnumerable的方法GetAnimals()。您的第二个项目将包含如下所示的界面:

public interface IAnimal
{
    UInt32 Height { get; }
}

public interface IExtension
{
    IEnumerable<IAnimal> GetAnimals();
}

该项目将是类型类库,并且只包含这些接口。该项目引用您的主项目。您的主项目将引用此类库,您可以将类库提供给您的用户/客户/扩展器,他们可以通过实现IExtension来构建扩展。

更新:进行扩展的关键是您的用户永远不会直接访问您的任何具体类型。它们始终只能访问您的具体类型实现的接口。您需要构建应用程序以使所有内容具有接口层次结构,以便您可以向用户提供这些接口。您希望避免将任何具体类型放入扩展类库中。