[英]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.