2010-08-03 2 views
2

Как передать класс в другой класс кодексу?Как передать класс в другой класс кодовому коду?

Когда я отлаживаю и проверяю myCategoryObj на странице Default.aspx, я вижу, что объект находится в отладке. Что я делаю не так?

Я знаю, что я мог бы создать объект в Default.aspx, но мне не нужно, чтобы я мог вызывать уровень бизнес-логики и попросить вернуть объект, а затем заполнить объект и передать его обратно в бизнес Логический уровень для сохранения (вставка или обновление).

Надеюсь, это имеет смысл.

Default.aspx

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using SC1.Models.OBJ; 
using SC1.Models.BLL; 
using SC1.Models.DAL; 

namespace SC1 
{ 
    public partial class Default : System.Web.UI.Page 
    { 
    protected void Page_Load(Object sender, EventArgs e) 
    { 
     // I know I could do this but I don't want to unless I have too. 
     //Category categoryObj = new Category(); 

     CategoryBLL myCategoryBLL = new CategoryBLL(); 

     Object myCategoryObj = myCategoryBLL.CategoryNew(); 

     // How do I make the code below work or what am I doing wrong. 
     myCategoryObj.Name = "test"; 

     string test = ""; 

    } 
    } 
} 

CategoryBLL.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using SC1.Models.DAL; 
using SC1.Models.OBJ; 

namespace SC1.Models.BLL 
{ 
    public class CategoryBLL 
    { 
    // Create a page object 
    Category myCategoryObject = new Category(); 

    // Create a Data Acces Layer Object 
    CategoryDAL myCategoryDAL = new CategoryDAL(); 


    public CategoryBLL() 
    { 
    } 

    public DataSet Select() 
    { 
     return (myCategoryDAL.Select()); 
    } 

    public Object CategoryNew() 
    { 
     return myCategoryObject; 
    } 



    } 
} 

CategoryDAL.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 

namespace SC1.Models.DAL 
{ 
    public class CategoryDAL 
    { 
    public CategoryDAL() 
    { 
    } 
    string connStr = ConfigurationManager.ConnectionStrings["staceys_cakesConnectionString"].ConnectionString; 

    // select all 
    public DataSet Select() 
    { 
     SqlConnection sqlConnection1 = new SqlConnection(); 
     string SqlString = "select * from Categories"; 
     SqlDataAdapter da = new SqlDataAdapter(SqlString, connStr); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "Categories"); 
     return (ds); 
    } 
    // save 
    // insert 
    // update 
    // delete 

    } 
} 

Category.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace SC1.Models.OBJ 
{ 
    public class Category 
    { 
    public int CategoryID { get; set; } 
    public int ParentID { get; set; } 
    public string Name { get; set; } 
    public int DisplayOrder { get; set; } 
    public bool Active { get; set; } 

    public Category(){ 
    } 

    } 
} 
+0

Нет, это не имеет смысла. Вы хотите передать класс классу или, скорее, объекту класса, и этот объект живет в раскрывающемся списке. Это примерно до тех пор, пока я не получил. Скажите нам, что * * происходит, и то, что вы * хотите *, вместо этого. –

+0

то, что я пытался сделать, это иметь код за вызовом BLL, а затем получить объект из DAL или Object, а затем, когда я задал правильность, я мог просто иметь функцию, которая говорит Save (object _CategoryObject), и это см. идентификатор или идентификатор, и если ID существует, он будет вставлять новую запись, если идентификатор уже существует, тогда он будет обновлять запись. Плюс я думал, что, поскольку объект - это то, что имеет в своем роде, тогда я не должен устанавливать свойства нигде. –

+0

Я полагаю, что я должен быть неправ ... так что не беспокойтесь, я пытаюсь понять это правильно. Класс автомобиля имеет свойства, но уровень бизнес-логики, называющий слой доступа к данным для сохранения, не должен быть автомобилем, какими являются качества? или я потерялся в OO World? –

ответ

2

изменение

Object myCategoryObj = myCategoryBLL.CategoryNew() 

к

Category myCategoryObj = myCategoryBLL.CategoryNew() 

, а также

общественного объекта CategoryNew() { возврата myCategoryObject; }

в

общественного Категория CategoryNew() { возврата myCategoryObject; }

+0

Спасибо, это было где я ошибся. На самом деле мне сказали на работе другой кодер, чтобы переместить свойства BLL. Я знал, что это было неправильно. Так это хороший способ сделать OO, или я должен больше читать где? @gbogumil? –

+0

Я бы изменил выбор DAL, чтобы вернуть IEnumerable или список или написать еще один простой класс для представления списка объектов caterery. DAL преобразует BL в DL и DL в BL. BL не должно иметь дело с DataSets/Tables/Rows. Это больше работает впереди, но в конечном итоге делает более чистым код. –

+0

@gbogumi звучит хорошо. Я до сих пор новичок в DotNet, поэтому я рассмотрю IEnumerable или Список . Как изменить нижнюю строку кода, чтобы она не была в каждом DAL? string connStr = ConfigurationManager.ConnectionStrings ["staceys_cakesConnectionString"]. ConnectionString; –

Смежные вопросы