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