C# 创建需要引用主程序的库

C# 创建需要引用主程序的库,c#,dll,C#,Dll,我有一个构建引擎,我正在添加自定义 我添加的定制是以库的形式出现的,其中包含特定于Subversion的函数 我的问题是,现在我已经将这个功能分为一个主exe和几个dll,这个dll需要引用主项目(exe)中的一些类 例如: 我的生成引擎程序包含一个“项目类” SVN dll有一个带有签名的函数: SVNSourceControl(Project project, Logger logger) 我通过引用我构建的项目以及为我执行日志记录的记录器来实例化SVN类 记录器很好,因为我已经将其分离到

我有一个构建引擎,我正在添加自定义

我添加的定制是以库的形式出现的,其中包含特定于Subversion的函数

我的问题是,现在我已经将这个功能分为一个主exe和几个dll,这个dll需要引用主项目(exe)中的一些类

例如:

我的生成引擎程序包含一个“项目类”

SVN dll有一个带有签名的函数:

SVNSourceControl(Project project, Logger logger)
我通过引用我构建的项目以及为我执行日志记录的记录器来实例化SVN类

记录器很好,因为我已经将其分离到另一个dll中并添加了引用

  • 我是否需要将我的“project”类分离到单独的dll中并添加引用
  • 我需要添加对我的dll的引用吗?它是对我的主exe和其中的类的引用
  • 我需要重新编写库代码来绕过它吗?(希望不是:)

  • 谢谢。

    您可以做的一件事是为您的
    项目
    类创建一个接口,该接口公开您需要在库中访问的
    项目
    部分:

    public interface IProject
    {
        string Name { get; }
    }
    
    然后更改
    SVNSourceControl()
    方法以接受接口而不是类:

    SVNSourceControl(IProject project, Logger logger)
    
    完成后,剩下的就是在主exe中将
    Project
    定义为实现
    IProject

    public class Project : myDllNamespace.IProject
    {
        public string Name { get; private set; }
    
        // Whatever else
    }
    
    这是假设包含
    IProject
    接口和
    SVNSourceControl()
    方法的dll已添加为对主dll的引用。如果那不是真的,你也得这么做