Мне интересно, есть ли в приложении ASP.NET функция, эквивалентная PHP call_user_func()
. Я хочу сделать преобразование из PHP-приложения в ASP.NET как средство обучения самому языку, взяв CMS, которую я создал профессионально, и пытаясь воссоздать ее на этом другом языке.
Причина, по которой мне нужна функция, подобная этой, состоит в том, что текущая структура моей PHP CMS включает архитектуру плагинов, и определенные части CMS представляют себя для плагинов, а затем обрабатывают возвращенную информацию в виде массива. Это почти та же система, которую использует Drupal.
Возможно, я не на этом пути?
Думаю, для пояснения приведу пример того, как это работает в моей нынешней системе:
<?php
class Test {
function TestMessage() {
// set up array
$arrTest = array("Hello", "World");
// get extra values from all available plugins
$arrExtras = CMS::InvokeHook("HelloTest");
// now contains Hello, World, Foo, Bar
$arrTests = array_merge($arrTest, $arrExtras);
}
}
class CMS {
InvokeHook($function) {
// now contains a couple plugins
$plugins = CMS::GetPlugins();
// empty array of values
$values = array();
foreach($plugins as $plugin) {
// if this plugin has the called method...
if(method_exists($plugin, $function)) {
// call the function and merge in the results
$values[] = call_user_func(array($plugin, $function));
}
}
// return results as an array
return $values;
}
}
class FooTest {
function HelloTest() {
return "Foo";
}
}
class BarTest {
function HelloTest() {
return "Bar";
}
}
?>
ПРИМЕЧАНИЕ. Вызов InvokeHook () упрощен, поскольку я пишу это из памяти, но в этом суть.