【发布时间】:2014-03-11 23:36:23
【问题描述】:
我有一些需要大量参数的类。我刚刚创建了一个带有两个参数的示例来演示我的问题。
public class Zoo
{
public List<Animal> Animals { get; set; }
public Zoo()
{
Animals = new List<Animal>();
}
// Pass all parameters
public void AddAnimal(string name, int age)
{
Animals.Add(new Animal(name, age));
}
// -> pseudo code <- Create the parameter reference automated -> pseudo code <-
public void AddAnimal(params ...)
{
Animals.Add(new Animal(...));
}
}
public class Animal
{
public string Name { get; set; }
public int Age { get; set; }
public Animal(string name, int age)
{
Name = name;
Age = age;
}
}
如果我想将Animal 添加到我的Zoo,我有两个选择。
- 将所有参数传递给
AddAnimal方法 - 将
Animal对象添加到List
正如我所说,我有很多参数和很多“动物”。
是否可以在不手动添加到 AddAnimal 方法的情况下引用 Animal 构造函数的参数? (参见:第一个代码块中的-> pseudo code <-)
但我想保留方法调用。
Zoo zoo = new Zoo();
zoo.AddAnimal("Tom", 8);
提前致谢, 一月
编辑: 出于某种原因,我想阻止使用以下方法之一:
zoo.AddAnimal(new Animal("Ben", 9));
zoo.AddAnimal(new Animal { "Ben", 9 }); // With empty constructor...
那么,最后一个问题是:是否可以只使用only构造函数参数而不将它们c&p到方法中?
【问题讨论】:
-
您的
param object[]方法可能是您自动代理参数(运行时类型检查和装箱交易)所能获得的全部...阅读factory 模式,因为它可能是您想要的实现...或者可能是 t4(用于代码生成的 VS 模板...)
标签: c# generics methods parameters constructor