我是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。你知道如何解决这个问题吗?
答案 0 :(得分:2)
当然,使用DTO(数据传输对象)。也就是说,创建一个包含要发送的所有字段的类,并将其实例用作参数。额外的好处是,即使您更改了DTO课程,您的方法签名也不会改变。
答案 1 :(得分:1)
您可以传递代表您正在操作的项目的域对象。
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);
答案 2 :(得分:1)
使用C# Initializers或Data Transfer Object比使用大量构造函数参数更好。或者将两者结合起来。
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 );
}
答案 3 :(得分:0)
您应该编写一个包含要传递给方法的属性的新类,并将您的方法更改为仅包含该新类。
对于您的示例,请编写一个这样的新类:
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
}