通过类C#传递的参数
本文关键字:参数 | 更新日期: 2023-09-27 18:24:14
我对C#还很陌生,我遇到了一个问题,我试图将一些变量从一个类传递到另一个类。
我有一个业务层,在那里我收集变量并告诉他们去哪里,还有一个UI层,我想在点击按钮时激活该方法。
UI层:
private void btnLog_Click(object sender, EventArgs e)
{
BusinessLayer BUS = new BusinessLayer();
BUS.InsertLog(dunno how to reference variables here);
}
业务层:
public void InsertLog(int CustomerId,
DateTime DateLogged,
string CustomerRef,
int AssignedEmployeeId,
string Description,
int ImpactId,
string RootCause,
string RootFix,
int StatusId,
DateTime FixDate,
float TimeUsed,
string InternalRef)
{
DataLayer dao = new DataLayer();
dao.CommandSqlStatement("INSERT Region (CustomerId,
DateLogged,
CustomerRef,
AssignedEmployeeId,
Description,
ImpactId,
ImpactBrief,
RootCause,
RootFix,
StatusId,
FixDate,
TimeUsed,
InternalRef) " +
"VALUES (" + CustomerId + ", " +
DateLogged + ", '" +
CustomerRef + "', " +
AssignedEmployeeId + ", '" +
Description + "', " +
ImpactId + ", '" +
RootCause + "', '" +
RootFix + "', " +
StatusId + ", " +
FixDate + ", " +
TimeUsed + ", '" +
InternalRef);
}
我只想知道如何引用UILayer中的变量,因为我已经尝试了几种方法,但似乎无法解决,有人能帮忙吗?
我假设UILayer中所有这些值都可用,所以您只需将InsertLog方法中所有参数的值放入对方法的调用中
private void btnLog_Click(object sender, EventArgs e)
{
BusinessLayer BUS = new BusinessLayer();
BUS.InsertLog(CostumerId, dateLogged, costumerRef, etc);
}
如果UILayer中还没有这些值,那么只需要从某个地方获取它们。这取决于你把它们分配到哪里。
首先,在类中声明要传递给BL:的变量列表
int CustomerId, AssignedEmployeeId, ImpactId, StatusId;
string InternalRef, CustomerRef, Description, RootCause, RootFix;
DateTime DateLogged, FixDate;
float TimeUsed;
然后,编写一种方法,为每个变量分配所需的值:
private void bindDataBeforeSending()
{
CustomerRef = Request.Form["CustomerId"]; // for example
...
}
然后,调用按正确顺序传递变量的方法:
private void btnLog_Click(object sender, EventArgs e)
{
bindDataBeforeSending();
BusinessLayer BUS = new BusinessLayer();
BUS.InsertLog(CustomerId,DateLogged,CustomerRef,AssignedEmployeeId,Description,ImpactId,RootCause,RootFix,StatusId,FixDate,TimeUsed,InternalRef);
}
如果UI和BL属于两个不同的项目,请确保在UI引用中包含BL。
为了回答您的问题,我将做一些假设来理解这个问题。您有一个包含TextBox
等控件的窗体,这些控件具有Log
的值,或者如果没有,您知道需要将哪些值传递给InsertLog
方法。然后,您可以简单地调用该方法,并传递所需的参数。
要从控件中获取值,您可以执行以下操作:-
BUS.InsertLog(txtBoxCostumerId.Text, /*more parameters */)
直接OR值,如-
BUS.InsertLog(costumerId /*more parameters */)
备注-
建议不要在SQL查询中直接使用值,而是使用
Parameters
,因为它们容易出现SQL注入不应该有太多的参数,就像您的业务类一样,将参数限制为tw0或三个最大值,如果需要更多的参数,请使用DTO对象而不是