如何使用 C#.net (VS2012) 访问另一个项目中的类(但在同一解决方案中)

本文关键字:解决方案 另一个 何使用 net VS2012 访问 项目 | 更新日期: 2023-09-27 18:33:34

我第一次在三层架构上工作,我在一个解决方案中创建了三个项目,项目一个名为 BLL,第二个名为 DAL,第三个是名称模型,我在模型中创建了接口,现在想在 BLL 中创建业务逻辑,并希望将其连接到我连接数据库的 DAL

为此,我添加了每个项目的引用,就像我在模型中添加了 BLL 的引用并在 DAL 中添加了 BLL 的引用一样。

现在我创建了一个类是 DAL,我已经在其中连接了我的数据库并让 alos 在模型中创建了一个 Windows 窗体,

现在我的问题是

1(如何在 BLL 中访问 DAL 类,在模型中访问 BLL 的类

2(以及我必须创建哪些逻辑(在BLL中(才能通过BLL访问数据库

我连接数据库的类是

数据库.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient();
namespace WindowsFormsApplication3
{
    class DB
    {
        public void fnc_ConnectoToDB(ref SqlConnection cn)
        {
            string strConnectionString = null;
            strConnectionString = @"Data Source=AHSANMUGHAL;Initial Catalog=SurveyBuilder;User ID=sa;Password=ahsan";
            cn = new SqlConnection();
            cn.ConnectionString = strConnectionString;
            cn.Open();      
        }
        public void fnc_CloseCn(ref SqlConnection cn)
        {
            if (cn.State == ConnectionState.Open == true)
            {
                cn.Close();
            }
        }
    }
}

我知道这是一个有点令人困惑的问题,但我希望你们能理解它,并尽快

如何使用 C#.net (VS2012) 访问另一个项目中的类(但在同一解决方案中)

首先,你需要公开你的类。

公共类数据库

尝试使用像 ninject 这样的依赖注入框架。

下面是一个示例:

您的实施:

public class Samurai {
    public IWeapon Weapon { get; private set; }
    public Samurai(IWeapon weapon) 
    {
        this.Weapon = weapon;
    }
}

还有一个模块给武士它的武器:

public class WarriorModule : NinjectModule
{
    public override void Load() 
    {
        this.Bind<IWeapon>().To<Sword>();
    }
}

就这么简单。

下面是一个基于类的依赖关系注入的简单示例。

不会利用任何 IoC(控制反转(容器来使您的实例更易于管理。 我认为如果您最初避免使用 IOC 容器的魔力,则更容易概念化。 当你向上移动时,它也让你很高兴拥有它。

Ninject是另一个答案中提到的IoC container,Unity是另一个答案。

using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Model : Form
    {
        public Model()
        {
            InitializeComponent();
            var bll = new BLL(new DAL());
            bll.WriteToDatabase("mydbvalue");
        }
    }
    public interface IBll
    {
        void WriteToDatabase(string value);
    }
    public class BLL: IBll
    {
        private IDal _dataLayer;
        public BLL(IDal dataLayer)
        {
            _dataLayer = dataLayer;
        }
        public void WriteToDatabase(string value)
        {
            _dataLayer.WriteToDatabase(value);
        }
    }
    public interface IDal
    {
        void WriteToDatabase(string value);
    }
    public class DAL:IDal
    {
        public void WriteToDatabase(string value)
        {
            fnc_ConnectToDB();
        }
    }
}
相关文章: