C# 访问和填充另一个类';DAL BLL设置中的s属性

C# 访问和填充另一个类';DAL BLL设置中的s属性,c#,asp.net,data-access-layer,business-logic-layer,C#,Asp.net,Data Access Layer,Business Logic Layer,我想在BLLServiceRequests中返回DALServiceRequest属性及其相应的DALRequest属性,因为我使用的SP是Request和ServiceRequest表之间的联接表。问题是当我点击以下代码时: var请求新项目= 普通托利斯特(dt) 它找不到我在DALServiceRequest的属性中设置的DALRequest属性。有人能告诉我正确的实施方法吗?多谢各位 BLL 公共类BLLServiceRequests { 公共列表GetServiceRequestByR

我想在
BLLServiceRequests
中返回
DALServiceRequest
属性及其相应的
DALRequest
属性,因为我使用的SP是
Request
ServiceRequest
表之间的联接表。问题是当我点击以下代码时:

var请求新项目= 普通托利斯特(dt)

它找不到我在
DALServiceRequest
的属性中设置的
DALRequest
属性。有人能告诉我正确的实施方法吗?多谢各位

BLL

公共类BLLServiceRequests
{
公共列表GetServiceRequestByRequestId(intrequestID)
{
var obj=新的DALServiceRequests();
返回obj.GetServiceRequestByRequestId(requestID);
}
}
达尔

公共类请求
{
公共类属性
{
公共int id{get;set;}
公共int请求类型{get;set;}
公共日期时间createDate{get;set;}
}
}
公共类DALServiceRequests
{
公共类属性
{
公共int id{get;set;}
public int requestId{get;set;}
公共字符串问题{get;set;}
public DALRequests.Properties请求{get;set;}//是否正确?
}
公共列表GetServiceRequestByRequestId(int requestID)
{
字符串cnStr=Common.dbConnStr;
SqlConnection cn=新的SqlConnection(cnStr);
SqlCommand cmd=新的SqlCommand();
DataTable dt=新的DataTable();
SqlDataAdapter=新的SqlDataAdapter();
cmd.CommandType=CommandType.storedProcess;
cmd.CommandText=“GetServiceRequestByRequestId”;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue(“@requestID”,requestID);
尝试
{
cn.Open();
cmd.Connection=cn;
adapter.SelectCommand=cmd;
适配器填充(dt);
var requestNewProjects=Common.ToList(dt);
//上面的代码找不到已在DALServiceRequests.properties中定义的DALRequests属性
返回新项目;
}
捕获(例外情况除外)
{
掷骰子;
}
最后
{
cn.Close();
cn.Dispose();
cmd.Dispose();
dt.Dispose();
adapter.Dispose();
}
}
}
这是我在达尔的普通课。这里没什么可看的,它只是我用来将datatable转换为list的一个实用程序类

public static class Common
{
    public static string dbConnStr = ConfigurationManager.ConnectionStrings["dbConnString"].ToString();

    public static List<T> ToList<T>(DataTable table)
    {
        List<T> list = new List<T>();
        T item;
        Type listItemType = typeof(T);
        for (int i = 0; i < table.Rows.Count; i++)
        {
            item = (T)Activator.CreateInstance(listItemType);
            MapRow(item, table, listItemType, i);
            list.Add(item);
        }
        return list;
    }

    private static void MapRow(object vOb, DataTable table, Type type, int row)
    {
        for (int col = 0; col < table.Columns.Count; col++)
        {
            var columnName = table.Columns[col].ColumnName;
            var prop = type.GetProperty(columnName);
            object data = table.Rows[row][col];

            if (data == System.DBNull.Value)
            {
            }
            else
                prop.SetValue(vOb, data, null);
        }

    }
}
公共静态类公共
{
公共静态字符串dbConnStr=ConfigurationManager.ConnectionString[“dbConnString”].ToString();
公共静态列表收费表(数据表)
{
列表=新列表();
T项;
类型listItemType=typeof(T);
for(int i=0;i
为此,您可以使用

如果您将
DALRequests
添加到
DALServiceRequests
中,它将允许您访问
DALRequests
中的所有属性,包括所有方法,但正如我看到的,您只有
DALRequests中的属性

另一种方法是像以前一样将类定义为属性,但不使用
.properties

public DALRequests request { get; set; }
然后,您可以通过以下方式访问属性:

DALServiceRequests req = new DALServiceRequests(); 
var somePropInfo = req.DALRequests.createDate;// Fill it correcly in line above
public class DALServiceRequests:DALRequests
public DALRequests request { get; set; }
DALServiceRequests req = new DALServiceRequests(); 
var somePropInfo = req.DALRequests.createDate;// Fill it correcly in line above