如何从Business层访问内部方法

时间:2015-04-30 07:55:31

标签: asp.net

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

test.c:3:5: error: initializer element is not constant
const int n = i+1;
^

我希望访问内部Method方法的.cs:

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

1 个答案:

答案 0 :(得分:0)

制作方法public,如public DataTable SaveCustomerDetail,这是最简单的方法。

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

所以你要做的就是从另一个internal DataTable SaveCustomerDetail访问dll,这是不行的。您只能从其他public访问dll方法。

您可以这样考虑:您的事件btnplaceorder_Click是表示层中控件的一部分,而您的internal方法DataTable SaveCustomerDetail是业务层的一部分。 btnplaceorder_Click只是不知道您的代码中有一个名为DataTable SaveCustomerDetail的方法,因为您创建了internal。因此,要让所有想要调用它的人都可以看到它,无论代码位于何处,只需将其设为public

您可以在此处详细了解internal - protected - public之间的差异:internal vs public in c#

也许它可以帮助您了解视图模型设计模式:https://stackoverflow.com/search?q=view+model+pattern