У меня есть 2 типа с именами Effect
и EffectMethods
, которые являются статическим классом, для которого я вызываю метод:
public class EffectMethods
{
public static EffectResult Blend (Effect effect)
{
bool success = true;
return new EffectResult ( effect.Type, success );
}
}
Я нахожу правильный метод, используя:
Type.GetMethods ( BindingFlags.Public | BindingFlags.Static );
и отфильтруйте правильный.
Но когда я это называю:
( EffectResult ) method.Invoke ( null, new object [ ] { this } );
public class Effect
{
public EffectResult Apply()
{
var methods = Type.GetMethods ( BindingFlags.Public | BindingFlags.Static );
var method = methods.First ( ... );
// This result value is now different (success = false)
return ( EffectResult ) method.Invoke ( null, new object [ ] { this } );
}
}
Я получаю неправильный результат. Здесь this
является текущим экземпляром Effect
, потому что это тип, который включает вызов отражения.
По сути, одно из значений, которые я вычисляю, - это флаг, который возвращает информацию об успешности операции. Но это значение установлено в true в коде, но после возврата метода методом отражения результат будет другим.
Я делаю это неправильно? Есть ли что-то, что мне не хватает? Я четко вижу значение true в методе, но на сайте вызовов оно отображается по-другому.