コード例 #1
0
            internal override object Raise(ModelTransaction transaction)
            {
                // Resolve reference arguments
                foreach (var p in method.Parameters)
                {
                    if (p.ReferenceType != null && args[p.Index] != null)
                    {
                        if (p.IsList)
                        {
                            args[p.Index] = ((ModelInstance[])args[p.Index]).Select(gi => transaction.GetInstance(gi.Type, gi.Id)).ToList(p.ReferenceType, p.ParameterType);
                        }
                        else
                        {
                            ModelInstance mi = (ModelInstance)args[p.Index];
                            mi            = transaction.GetInstance(mi.Type, mi.Id);
                            args[p.Index] = mi == null ? null : mi.Instance;
                        }
                    }
                }

                // Invoke the method
                return(method.Invoke(Instance, args));
            }