コード例 #1
0
        public override HeronValue Apply(VM vm, HeronValue[] args)
        {
            Object[] os = HeronDotNet.ObjectsToDotNetArray(args);
            Object   o  = self.GetSystemType().InvokeMember(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, self.Unmarshal(), os);

            return(DotNetObject.Marshal(o));
        }
コード例 #2
0
        public override HeronValue Invoke(VM vm, HeronValue self, HeronValue[] args)
        {
            Trace.Assert(self == null);
            Object[] os = HeronDotNet.ObjectsToDotNetArray(args);
            Object   o  = this.self.GetSystemType().InvokeMember(name, BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, null, os);

            return(DotNetObject.Marshal(o));
        }
コード例 #3
0
 public ListToIterValue(IEnumerable iter, HeronType elementType)
 {
     list = new List <HeronValue>();
     foreach (Object o in iter)
     {
         list.Add(HeronDotNet.Marshal(o));
     }
     current          = 0;
     this.elementType = elementType;
 }
コード例 #4
0
        public override HeronValue Instantiate(VM vm, HeronValue[] args, ModuleInstance m)
        {
            Object[] objs = HeronDotNet.ObjectsToDotNetArray(args);
            Object   o    = GetSystemType().InvokeMember(null, BindingFlags.Instance | BindingFlags.Public
                                                         | BindingFlags.Default | BindingFlags.CreateInstance, null, null, objs);

            if (o == null)
            {
                throw new Exception("Unable to construct " + name);
            }
            return(DotNetObject.Marshal(o));
        }
コード例 #5
0
 /// <summary>
 /// Creates a Heron object from a System (.NET) object
 /// If it is a primitive, this will convert to the Heron primitives
 /// </summary>
 /// <param name="o"></param>
 /// <returns></returns>
 public static HeronValue Marshal(Object o)
 {
     return(HeronDotNet.Marshal(o));
 }