Beispiel #1
0
        public static bool CanActOn(this IActOnItem self, IItem item)
        {
            if (!(self is ICanActOnItem))
            {
                return(true);
            }

            return((bool)self.GetType()
                   .GetMethod("CanActOn", BindingFlags.Instance | BindingFlags.Public, null, new[] { self.TypedItemType }, null)
                   .Invoke(self, new object[] { item.Item }));
        }
Beispiel #2
0
        public static IItem ActOn(this IActOnItem self, IItem item)
        {
            IItem      returnedValue = null;
            MethodInfo methodInfo    = self.GetType()
                                       .GetMethod("ActOn", BindingFlags.Instance | BindingFlags.Public, null, new[] { self.TypedItemType }, null);

            UnwrapTargetInvocationException(() =>
                                            returnedValue = methodInfo.Invoke(self, new[] { item.Item }) as IItem);
            if (methodInfo.ReturnType == typeof(void))
            {
                returnedValue = NoReturnValue.Object;
            }
            return(returnedValue);
        }