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

Ahs*_*ain 5 .net c# winforms visual-studio-2012

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

为了这个目的,我添加了每个项目的参考,其他像我在模型中添加了BLL的参考,并在DAL中添加了BLL的参考.

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

现在我的问题是

1)如何在模型中访问BLL和BLL中的DAL类

2)以及我将通过BLL创建(在BLL中)访问数据库的逻辑

我连接数据库的类是

DB.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();
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

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

Kee*_*Wit 1

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

这是一个例子:

您的实施:

public class Samurai {
    public IWeapon Weapon { get; private set; }
    public Samurai(IWeapon weapon) 
    {
        this.Weapon = weapon;
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个为武士提供武器的模块:

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

就那么简单。