簡體   English   中英

在C#中的類之間傳遞10個以上的參數?

[英]Passing more than 10 parameters between classes in C#?

我是C#的新手,我需要一個小小的幫助,如何在類之間傳遞多個參數? 下面是一個小例子,但我的參數將超過10.還有另一種方法嗎?

public StreamStructure(String name, string id, string classname, int number)
    {
        this.name = name;
        this.id = id;
        this.classname = classname;
        this.number = number;
    }

清單------

List<abc> don = new List<abc>();
            foreach (XmlElement abc_cdb in abc_cdbs)
            {

                abc.Name = abc_cdb.GetAttribute("NAME");
                abc.Id = abc_cdb.GetAttribute("id");
                abc.Clssname = abc_cdb.GetAttribute("classname");
                abc.number = Convert.ToInt32(abc_cdb.GetAttribute("number"));
                don.Add(abc);


               }

我已按照ans中的建議使用了但是我試圖在C#中創建一個列表,我的第一個記錄被第二個記錄替換,因為MyDTO中的字段被定義為public。 你知道如何解決這個問題嗎?

當然,使用DTO(數據傳輸對象)。 也就是說,創建一個包含要發送的所有字段的類,並將其實例用作參數。 額外的好處是,即使您更改了DTO課程,您的方法簽名也不會改變。

您可以傳遞表示您正在操作的項目的域對象。

    public class Widget
    {
        public string Name {get;set;}
        public int Id {get;set;}
        public string ClassName {get;set;}
        public int Number {get;set;}
    }

    var myWidget = new Widget();
    myWidget.Name = "Blue Widget";
    //etc

    StreamStructure(myWidget);

使用C#Initializers數據傳輸對象可能比使用大量構造函數參數更好。 或者將兩者結合起來。

public class MyDTO
{
   String Name { get; set; }
   String Id { get; set; }
   String ClassName { get; set; }
   int Number { get; set; }
}

var MyDTO = new MyDTO() 
{
   Name      = Name,
   Id        = Id,
   ClassName = ClassName,
   Number    = Number
}

var stream = new StreamStructure(MyDTO) 

要在示例中創建這些對象的列表,請在循環體中創建新的DTO。

var don = new List<MyDTO>(); 
foreach (XmlElement abc_cdb in abc_cdbs) 
{
    var abc = new MyDTO()
    {
        Name = abc_cdb.GetAttribute("NAME");
        Id = abc_cdb.GetAttribute("id");
        ClassName = abc_cdb.GetAttribute("classname");
        Number = Convert.ToInt32(abc_cdb.GetAttribute("number"));
    };

    don.Add( abc );
}

您應該編寫一個包含要傳遞給方法的屬性的新類,並將您的方法更改為僅包含該新類。

對於您的示例,編寫一個這樣的新類:

public class RequestObject
{
    public string Name { get; set; }
    public string ID { get; set; }
    public string ClassName { get; set; }
    public int Number { get; set; }
}

然后像這樣改變你的方法:

public StreamStructure(RequestObject requestObject)
{
    //DoStuff
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM