Я работаю с задачей MSBuild, которая должна создавать экземпляр класса. Первоначально у класса был только один конструктор без параметров, поэтому для выполнения всей задачи MSBuild было имя типа для создания экземпляра класса. Теперь у нас есть прецедент для запуска задачи для конкретных конструкторов, и я не знаю, как справиться с этим в общем виде. Скажем, мне нужно создать экземпляр различные ароматы из ClassA
:MSBuild: Опишите, какой конструктор для вызова
public class ClassA
{
public ClassA() { }
public ClassA(int someArgument) { }
public ClassA(int someArgument, bool someOtherArgument) { }
}
Это то, что исходная задача выглядела как:
<DoSomethingTask Assembly="ContainsClassA.dll" Type="ClassA" />
Мой идеал задача будет выглядеть примерно так, чтобы я мог вызвать любой конструктор, который имеет примитивный типы в качестве аргументов:
<DoSomethingTask Assembly="ContainsClassA.dll" Type="ClassA">
<ConstructorArgs>
<Arg type="int">1</Arg>
<Arg type="bool">True</Arg>
</ConstructorArgs>
</DoSomethingTask>
Я очень потерял, что искать, чтобы получить этот тип функциональности. Я мог бы сделать что-то вроде создания свойства string, которое называется ConstructorArgs
, и проанализировать его в любом формате, который я хочу, но я надеюсь, что что-то более чистое. Спасибо за любую помощь, которую вы можете предоставить!
Редактировать - В случае, если кто-либо задается вопросом, действительный Задача, которую я пытаюсь изменить, создает прегенерированный вид на основе созданной Entity Framework DbContext. У нас есть свой собственный подкласс DbContext с различными конструкторами, и мы хотели бы иметь возможность вызывать конкретный во время генерации представления.
Это похоже на то, что я действительно делал бы в задаче, но проблема, которую я пытаюсь решить, включает неизвестное количество аргументов разных типов. Поэтому у меня могут быть такие конструкторы, как: (string, int, int), (string, bool), (string, bool, bool). Я больше искал, как предоставить массив в строках MSBuild с дескриптором примитивного типа. – Ocelot20