[英]Can't Add Reference to Visual C# Console App in Visual Studio
[英]Add reference Error in c# console app
我正在使用VS2010在C#中创建控制台应用程序。 它基于三层体系结构,包含三层
为了删除PMS.DAL和PMS.BL之间的循环依赖关系,我添加了一个额外的层PMS.Service。
Vehicle
在PMS.BL类,它实现接口IVehicle
从PMS.Service。 Vehicle
类的AddNewVehicle()
方法,该方法实现了IVehicle
AddNewVehicle(IVehicle obj)
方法... 一切正常,但在构建时,编译器表示要在PMS.UI中添加对PMS.Service的引用。
PMS.UI没有实现PMS.Service的任何接口,而是调用实现IVehicle
的PMS.BL的Vehicle类的AddNewVehicle AddNewVehicle()
方法。
仅当PMS.UI创建实现IVehicle
存在的IVehicle的Vehicle
Class of PMS.BL的实例时,才有必要向PMS.UI添加对PMS.Service的引用。
请帮助我,我是刚在c#中使用接口的...
谢谢你们的回答,但我仍然感到困惑。 我将在这里展示我的代码。我已经将所有四层添加为不同的c尖锐类库(不同的层)。
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();
}
}
具有给定的详细信息(无代码)。 这是我的理解。
PMS.Service (IVehicle.cs)
PMS.BL (Vehicle : IVehicle)
在这种情况下,如果要公开Vehicle,则还必须添加对PMS.Service的引用。 无论如何,在服务实现中使用模型接口/联系人看起来并不正确。 我宁愿考虑创建PMS.Contracts并在那里拥有我的模型/服务合同。
希望能有所帮助。
我认为您有体系结构问题。 基本上,如果您位于三层,这是个好方法:
IHM => BLL => DAL
Core
核心是一个包含工具功能(格式日期,编号等)和您的界面的项目。
依赖项:IHM参考BLL / BLL参考DAL。 所有这些都参考Core。 核心没有依赖性。
我像界面一样的初学者。 这是我必须选择的方式:
4个项目:
在核心中:两件事:接口IVehicle和实现该类的类称为Vehicle
因为我们需要使用DAL,所以我不知道如何不使用Core.Vehicle。 抽象类不好,因为如果DAL需要返回“ IVehicule”对象,则需要实现一个对象,而不能实现Abstract或Interface。
在BLL中:两个对象:实现Core.Vehicule的Car和Truck
在DAL中:一个对象:具有返回Core.Vehicule的方法的车辆
在IHM中:BLL.Car的调用
它在做...
编辑:我已经发布了一个像您一样的问题: POO和接口(在C#中)
希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.