예제 #1
0
 internal protected override JS.Core.JSObject GetMember(JSObject nameObj, bool create, bool own)
 {
     var name = nameObj.ToString();
     JS.Core.JSObject res = null;
     if (childs.TryGetValue(name, out res))
         return res;
     string reqname = Namespace + "." + name;
     var selection = types.StartedWith(reqname).GetEnumerator();
     if (selection.MoveNext())
     {
         if (unions != null && selection.Current.Key != reqname && selection.Current.Value.FullName[reqname.Length] == '`')
         {
             var ut = new GenericType(reqname);
             ut.Add(selection.Current.Value);
             while (selection.MoveNext())
                 if (selection.Current.Value.FullName[reqname.Length] == '`')
                 {
                     string fn = selection.Current.Value.FullName;
                     for (var i = fn.Length - 1; i > reqname.Length; i--)
                         if (!char.IsDigit(fn[i]))
                         {
                             fn = null;
                             break;
                         }
                     if (fn != null)
                         ut.Add(selection.Current.Value);
                 }
             res = TypeProxy.GetConstructor(ut);
             childs[name] = res;
             return res;
         }
         if (selection.Current.Key == reqname)
             return TypeProxy.GetConstructor(selection.Current.Value);
         res = TypeProxy.Proxy(new NamespaceProvider(reqname, unions != null));
         childs.Add(name, res);
         return res;
     }
     return new JS.Core.JSObject();
 }
예제 #2
0
 public Ctor(GenericType owner, Type target)
 {
     this.owner = owner;
     this.target = target;
 }