首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#控制台应用程序中添加引用错误

在c#控制台应用程序中添加引用错误
EN

Stack Overflow用户
提问于 2013-11-24 09:30:22
回答 2查看 405关注 0票数 0

我正在C#中使用VS2010创建一个控制台应用程序。它基于包含三层的三层体系结构。

  • PMS.UI
  • PMS.DAL
  • PMS.BL

为了消除PMS.DAL和PMS.BL之间的循环依赖,我添加了一个额外的层PMS.Service。

  1. 我在PMS.BL中创建了一个PMS.BL类,它从PMS.Service实现接口IVehicle
  2. 我在DAL和BL中都添加了PMS.Service的引用。
  3. 现在UI调用BL的AddNewVehicle()类的Vehicle方法,实现IVehicle
  4. AddNewVehicle(IVehicle obj)中调用VehicleDao的BL方法。

所有的工作都很好,但在编译时说要在PMS.UI中添加对PMS.UI的引用。

PMS.UI没有实现PMS.Service的任何接口,而是调用实现IVehicle的PMS.BL车辆类的AddNewVehicle()方法。

只有在创建PMS.Service类的Vehicle实例以实现PMS.Service中的IVehicle的情况下,才有必要添加对PMS.Service的引用。

请帮助我,我是新使用的接口在c#.

谢谢你们的回答,但我还是很困惑。我将在这里展示我的代码,我将所有四个层添加为不同的c++类库(不同层)。

代码语言:javascript
复制
1)PMS.UI(Added reference of PMS.BL)
Program.cs
using System;
using PMS.BL;
namespace PMS.APP
{
    class Program
    {
        static void Main()
        {
            var vBo = new VehicleBo();//Compiler Says Add reference of PMS.Service here.Why is it necessary to add Reference of it??
            vbo.VehicleNumber = "BA1PA 1212";
            vbo.VehicleType = "Bike";
            vbo.SaveNewVehicle();
        }
    }
}

2)PMS.BL(Added reference of PMS.DAL and PMS.Service)
VehicleBO.cs

using PMS.DAL;
using PMS.Service;
namespace PMS.BL
{
    public class VehicleBo : IVehicle
    {
        public string VehicleNumber { get; set; }
        public string VehicleType { get; set; }
        public void SaveNewVehicle()
        {
            var vDao = new VehicleDao();
            vDao.SaveNewVehicle(this);
        }
    }
}

3)PMS.DAL(Added reference of PMS.Service)
using PMS.Service;
namespace PMS.DAL
{
    public class VehicleDao
    {
        public void SaveNewVehicle(IVehicle obj)
        {
            //code to insert in database
        }
    }
}

4)PMS.Service
IVehicle.cs
namespace PMS.Service
{
    public interface IVehicle
    {
        string VehicleNumber { get; set; }
        string VehicleType { get; set; }
        void SaveNewVehicle();
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-11-24 10:02:44

具有给定的详细信息(没有代码)。这就是我所理解的。

代码语言:javascript
复制
PMS.Service (IVehicle.cs)
PMS.BL (Vehicle : IVehicle)

在这个场景中,如果您正在公开车辆,则还必须添加对PMS.Service的引用。在任何情况下,在服务实现中具有模型接口/联系人看起来都不正确。我更愿意考虑创建PMS.Contracts,并将我的模型/服务合同放在那里。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2013-11-24 10:04:42

我觉得你在建筑上有问题。基本上,如果您在三层,这是一个好方法:

代码语言:javascript
复制
IHM => BLL => DAL
Core

核心是一个包含工具功能的项目(格式、日期、编号等)。还有你的界面。

依赖项: IHM引用BLL / BLL引用DAL。所有这些参考核心。核心没有依赖。

我和你一样是界面初学者。在这里,如果我必须这样做,我会选择这样做:

4个项目:

  1. 核心
  2. BLL ( DAL - Core)
  3. DAL (部门核心)
  4. IHM (副院长-核心)

In Core :两样东西:一个接口IVehicle和一个实现该类调用工具的类

因为我们需要使用DAL,所以我不知道如何不使用Core.Vehicle。抽象类不是很好,因为如果DAL需要返回"IVehicule“对象,我们需要实现一个对象,而不能实现抽象或接口。

在BLL中:两个对象:实现Core.Vehicule的汽车和卡车

在DAL中:一个对象:带有返回Core.Vehicule的方法的车辆

在IHM中: BLL.Car的调用

它在做这件事..。

编辑:我发布了一个类似于你的问题:POO and Interface (in C#)

希望它能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20173042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档