Я рассматриваю возможное решение проблемы, над которой я работаю (приложение .NET 3.5 WinForms).
В нашем приложении у нас есть много методов (C#), аргументы которых вводятся пользователем приложения.
Примером может быть что-то вроде:
public void DoSomething(string name, DateTime date)
{
// ...
}
Где имя, дата в настоящее время вводятся с помощью простого текстового поля. Мы хотели бы иметь преимущества многофункциональных редакторов, защищенных паролем полей ввода, автозаполнения и многого другого.
Я бы хотел, чтобы пользовательский ввод выполнялся с помощью PropertyGrid, однако этот элемент управления может привязываться только к объекту, а не к аргументам.
Я прочитал обе отличные статьи из журнала MSDN о ProperyGrid:
дескриптор ICustomTypeDescriptor, часть 1
ICustomTypeDescriptor, часть 2
Однако это кажется полезным в сценарии, когда объект, который будет привязан к PropertyGrid, известен заранее, что не в моем случае.
Можно ли поддерживать этот сценарий? Есть ли какое-нибудь простое и легко реализуемое решение?
Я подумал об использовании Reflection.Emit для создания «временного» объекта во время выполнения, чьи свойства будут аргументами метода. Я никогда не делал этого раньше (использование пространства имен Reflection.Emit), и я хотел бы знать, как это влияет на производительность? (действительно ли он компилирует код во время выполнения в памяти или как это работает?)