如何在不调用DLL作为C#参考的情况下从项目调用类到另一个项目?

时间:2014-01-17 08:14:20

标签: c# dll reference

我有一个项目的三个部分,一个是Core(商务)项目,一个是webproject,最后一个是测试项目。

我想调用一些我保存在一个文件夹中的类,从核心项目到webproject,而不调用核心项目的dll。由于核心项目已经被引用到webproject中。因此,如果引用它将调用循环,而不允许我这样做。

如何在不调用DLL的情况下使用从核心项目到Web项目的类? 我已经尝试过'使用',代码如下。它不适合我。

using BlogEngine.Core.API.PageML; // I need to call all classes from this folder
using BlogPage = BlogEngine.Core.API.PageML;
namespace admin.Settings
{
 public partial class DownloadInsertPage : System.Web.UI.Page{
  protected void BtnPageMLInsertClick(object sender, EventArgs e)
  {
   var reader = new PageReaders(); // the class, I want to call from the core project
  }
}

谢谢

4 个答案:

答案 0 :(得分:3)

您的问题不明确(例如“因为Web项目已经被评审为webproject”)但是您应该真正让Web项目引用核心项目,但不是的另一种方式回合。核心业务逻辑不应该知道您的Web“视图”,但Web项目应该完全了解核心业务类。

如果你正在从核心项目中提到你正在引用的web项目中的类,你应该将它们移动到核心项目 - 或者转移到其他两个项目所引用的第三个项目,如果它们没有在逻辑上属于核心项目本身。

答案 1 :(得分:1)

您的模型可能会受益于合同界面 - 这将有助于您重新设计当前模型,以避免循环引用。这里有一些关于此的帖子:

a design to avoid circular reference in this scenario

Resolving Circular References (C#)

现在,我可能误解了你的问题,而你更愿意从了解附加模型中获益更多。在这种情况下,这篇文章可能会有所帮助:

C# Plugin Architecture with interfaces share between plugins

答案 2 :(得分:0)

你不能。

如果你需要在这两个程序集中都可以访问这些类,你应该创建一个可以被它们引用的第三个类,尽管这应该只保留给交叉关注点(例如记录逻辑)。

答案 3 :(得分:0)

谢谢你们的宝贵意见.. 我想分享一下,问题是什么以及我是如何解决的。

我在将一些类创建到PageML文件夹之后构建核心项目并构建它而不将此文件夹调用到Web项目中。并更新webproject中核心项目的引用(dll)。它对我有用。

谢谢大家

保持蛤蜊并做编码。

:)祝你玩得愉快