Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何从业务层访问内部方法_Asp.net - Fatal编程技术网

Asp.net 如何从业务层访问内部方法

Asp.net 如何从业务层访问内部方法,asp.net,Asp.net,我想访问内部方法如何访问请帮助 业务层类 internal DataTable SaveCustomerDetail() { SqlParameter[] parameters = new SqlParameter[7]; parameters[0] = DataAccesLayer.Addparameters("@CustomerName", CustomerName, SqlDbType.VarChar, 100); parameters[1] = DataAcces

我想访问内部方法如何访问请帮助 业务层类

internal DataTable SaveCustomerDetail() {
    SqlParameter[] parameters = new SqlParameter[7];
    parameters[0] = DataAccesLayer.Addparameters("@CustomerName", CustomerName, SqlDbType.VarChar, 100);
    parameters[1] = DataAccesLayer.Addparameters("@CustomerEmailID", CustomerEmailIDl, SqlDbType.VarChar, 100);
    parameters[2] = DataAccesLayer.Addparameters("@CustomerPhoneNumber",CustomerPhoneNumber, SqlDbType.VarChar, 100);
    parameters[3] = DataAccesLayer.Addparameters("@CustomerAddress", CustomerAddress, SqlDbType.VarChar, 100);
    parameters[4] = DataAccesLayer.Addparameters("@TotalProducts", totalproducats, SqlDbType.Int, 100);
    parameters[5] = DataAccesLayer.Addparameters("@TotalPrice", totalprice, SqlDbType.Int, 100);
    parameters[6] = DataAccesLayer.Addparameters("@PaymentMethod", PaymentMethod, SqlDbType.VarChar, 100);
    DataTable dt = DataAccesLayer.ExecuteDTBbyprocedure("SP_SAVECUSTOMERDETAIL",parameters);
    return dt;
}
这是我要访问内部方法的.cs:

protected void btnplaceorder_Click(object sender, EventArgs e)
{
    string productsid = string.Empty;
    DataTable dt;
    if (Session["Mycart"] != null) {
        dt = (DataTable)Session["Mycart"];
        BussinessLayer B = new BussinessLayer()
        {
            CustomerName = txtcustomername.Text,
            CustomerEmailIDl = txtcustomeremailid.Text,
            CustomerAddress = txtcustomeraddress.Text,
            CustomerPhoneNumber = txtphoneno.Text,
            totalproducats = Convert.ToInt32(txttotalproducts.Text),
            totalprice = Convert.ToInt32(txttotalprice.Text),
            PaymentMethod = rblpaymentmode.SelectedItem.Text
        };
        DataTable dtResult = B.SaveCustomerDetail();
    }
}

将方法
public
,如
public DataTable SaveCustomerDetail
,这是最简单的方法

如果您的应用程序是按View-ViewModel-Model模式设计的,那么您尝试访问的业务层与表示层位于不同的程序集中。这意味着它们位于不同的
dll
(项目)中

因此,您试图做的是从另一个
dll
访问
内部数据表SaveCustomerDetail
,这是不正常的。您只能从另一个
dll
访问
public
方法

您可以这样想:您的事件
btnplaceorder\u Click
是表示层中控件的一部分,而您的
internal
方法
DataTable SaveCustomerDetail
是业务层的一部分
btnplaceorder\u Click
只是不知道代码中有一个名为
DataTable SaveCustomerDetail
的方法,因为您将其设置为
内部
。因此,为了让所有想调用它的人都能看到它,不管它在代码中的什么位置,只需将它
公开即可

您可以在此处阅读有关
内部
-
受保护
-
公共
之间差异的更多信息:


也许它会帮助您了解视图模型设计模式:。

那么问题出在哪里?错误1“BussinessLayer”不包含“SaveCustomerDetail”的定义,并且找不到接受“BussinessLayer”类型的第一个参数的扩展方法“SaveCustomerDetail”(您是否缺少using指令或程序集引用?)上面显示的错误它们是否在相同的
命名空间中
?是的,它们在相同的命名空间中这是进一步的解释