hej jag undrar om man kan kalla på metoder dynamsik utan att använda en t.ex. switch-sats genom innehållet i en variabel.
string strCall = "metod1()";
alltså
anropa metoden som finns i strCall, i detta fall metod1()
3 svar · 397 visningar · startad av Herman
hej jag undrar om man kan kalla på metoder dynamsik utan att använda en t.ex. switch-sats genom innehållet i en variabel.
string strCall = "metod1()";
alltså
anropa metoden som finns i strCall, i detta fall metod1()
Kolla på reflections: http://www.dotnetbips.com/displayarticle.aspx?id=35
Tack, jag har tittat på det en smula men det verkar inte ge mig det jag vill - iaf inte enkelt. I php går det fint att göra just det jag vill.
Se nedan
<?php
function foo() {
echo "In foo()<br />\n";
}
function bar($arg = '')
{
echo "In bar(); argument was '$arg'.<br />\n";
}
// This is a wrapper function around echo
function echoit($string)
{
echo $string;
}
$func = 'foo';
$func(); // This calls foo()
$func = 'bar';
$func('test'); // This calls bar()
$func = 'echoit';
$func('test'); // This calls echoit()
?>
http://www.php.net/manual/sv/functions.variable-functions.php
Fick till det, men det är inte lika smidigt som i php. Men det är inte direkt oväntat med tanke på språk. :)
string strKlass = "Klusse";
string strMetod = "Melon";
Type t = typeof(strKlass);
Object obj = t.InvokeMember(null, BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);
string s = (string) t.InvokeMember(strMetod, BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance |
BindingFlags.InvokeMethod, null, obj, null);