Как получить доступ к классу в другом проекте (но в том же решении) с помощью 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
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>(); } }Вот так просто.
Вот простой пример внедрения зависимостей на основе ваших классов.
Это Не использует любые контейнеры 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