Как получить доступ к классу в другом проекте (но в том же решении) с помощью C#.net (VS2012)



Я первый раз работаю над трехслойной архитектурой, я создал три проекта в одном решении, проект Один называется BLL, второй называется DAL и третий-names Model, я создал интерфейс в Model, теперь хочу создать бизнес-логику в BLL и хочу подключить ее к DAL, где я подключил свою базу данных.



Для этого я добавил ссылку каждого проекта с другим, как я добавил ссылку BLL в модели и добавил ссылка на BLL в DAL.



Теперь, когда я создал класс-это DAL, в котором я подключил свою БД и alos создал форму Windows в Model,



Теперь мои вопросы



1) Как я могу получить доступ к классам DAL в BLL и BLL в Model



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

}
}




Я знаю, что это немного запутанный вопрос, но я надеюсь вы, ребята, поймете это и будете ans ASAP

592   3  

3 ответов:

Попробуйте использовать фреймворк внедрения зависимостей, такой как 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>();
    }
}

Вот так просто.

Прежде всего, вы должны сделать свой класс общедоступным.

публичный класс DB

Вот простой пример внедрения зависимостей на основе ваших классов.

Это Не использует любые контейнеры 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();
        }
    }
}

Comments

    Ничего не найдено.