У меня есть несколько классов, для которых требуется множество параметров. Я просто создал пример с двумя параметрами, чтобы продемонстрировать свою проблему.Принять параметры метода из конструктора
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
у меня есть 2 варианта.
- передавать все параметры к
AddAnimal
Метод - Добавить
Animal
объект вList
Как я уже сказал, у меня есть много Params и много «Animals».
Возможно ли связать параметры конструктора Animal
без добавления их вручную в метод AddAnimal? (См.: -> pseudo code <-
в первом кодовом блоке)
Но я хочу, чтобы вызов метода.
Zoo zoo = new Zoo();
zoo.AddAnimal("Tom", 8);
Спасибо заранее, Jan
Edit: По какой-то причине, я хочу, чтобы предотвратить с помощью одного из следующих способов:
zoo.AddAnimal(new Animal("Ben", 9));
zoo.AddAnimal(new Animal { "Ben", 9 }); // With empty constructor...
Итак, последний вопрос : Возможно ли использовать только параметры конструктора без c & p их в метод?
Ваш подход к параметру [] - это, вероятно, все, что вы можете получить для автоматического проксирования параметров (проверка типа времени выполнения и торговля боксом) ... Читайте на [factory] (http://en.wikipedia.org)/wiki/Abstract_factory_pattern), поскольку это, вероятно, то, что вы пытаетесь достичь ... Или, может быть, t4 (шаблоны для VS для генерации кода ...) –