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)); }