通过类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中的变量,因为我已经尝试了几种方法,但似乎无法解决,有人能帮忙吗?

通过类C#传递的参数

我假设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 */)

备注-

  1. 建议不要在SQL查询中直接使用值,而是使用Parameters,因为它们容易出现SQL注入

  2. 不应该有太多的参数,就像您的业务类一样,将参数限制为tw0或三个最大值,如果需要更多的参数,请使用DTO对象而不是