во-первых, ответ не
.Invoke("name", new object[] { });
:), как говорится, у меня есть некоторый старый общий код, который создает контекстные меню и обработчики горячих клавиш, используя определения из файла конфигурации, и выполняет фактическийметоды, использующие .Invoke (), где сигнатура метода предопределена или метод не выполняется
например, сигнатуры методов одинаковы с этими аргументами
change_back_color( mycontext ctx, object sender, controlItemClickEventArgs e)
{
//...
}
Мне нужно переделатькод, который включает в себя некоторые дополнительные функции и хотел бы иметь функциональность, подобную Unity / MEF, где подпись может включать только обязательные параметры и порядок аргументов может быть изменен
например, код может быть изменен на
[FunctionKey("myKey1")]
change_back_color( object sender, mycontext ctx )
{
//...
}
или
[FunctionKey("myKey1")]
change_back_color( mycontext ctx)
{
//...
}
Ищете руководство о том, как это сделать / где искать
ОБНОВЛЕНИЕ - определения приведены в дБ, которые можно получить, например, так:
var commands = dbContext.GetCommands("current_view_name") ; // return method key, user roles etc.
// and i can use the following to match to "current_view_name"
[ImportMany(RequiredCreationPolicy=CreationPolicy.NonShared)]
public IEnumerable<Lazy<MenuItem,IDictionary<string,object>> MenuItems
{
set
{
var fooMenuItems = value
.Where(x => x.Metadata["ContextTarget"] == "current_view_name")
.Select(x => x.Value);
// attach fooMenuItems to some context menu...
}
}
но эти методы также нуждаются в некоторых пользовательских аргументах!есть идеи?