Ejemplo n.º 1
0
        private void LookupAllStaticAccessors(out Dictionary <string, List <MethodInfo> > getters,
                                              out Dictionary <string, List <MethodInfo> > setters, out Dictionary <string, List <MethodInfo> > adders)
        {
            getters = new Dictionary <string, List <MethodInfo> >();
            setters = new Dictionary <string, List <MethodInfo> >();
            adders  = new Dictionary <string, List <MethodInfo> >();

            MethodInfo[] allMethods = UnderlyingType.GetMethods(AttachableProperties_BF);

            if (UnderlyingType.IsVisible)
            {
                LookupAllStaticAccessorsHelper(allMethods, getters, setters, adders, true);
            }
            else
            {
                LookupAllStaticAccessorsHelper(allMethods, getters, setters, adders, false);
            }
        }
Ejemplo n.º 2
0
 public override IEnumerable <IMethod> GetMethods(IReadOnlyList <IType> typeArguments, Predicate <IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
 {
     return(UnderlyingType.GetMethods(typeArguments, filter, options));
 }
Ejemplo n.º 3
0
        IEnumerable <XamlMember> DoLookupAllAttachableMembers()
        {
            // based on http://msdn.microsoft.com/en-us/library/ff184560.aspx
            var bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;

            var gl = new Dictionary <string, MethodInfo> ();
            var sl = new Dictionary <string, MethodInfo> ();
            var al = new Dictionary <string, MethodInfo> ();
            //var rl = new Dictionary<string,MethodInfo> ();
            var nl = new List <string> ();

            foreach (var mi in UnderlyingType.GetMethods(bf))
            {
                string name = null;
                if (mi.Name.StartsWith("Get", StringComparison.Ordinal))
                {
                    if (mi.ReturnType == typeof(void))
                    {
                        continue;
                    }
                    var args = mi.GetParameters();
                    if (args.Length != 1)
                    {
                        continue;
                    }
                    name = mi.Name.Substring(3);
                    gl.Add(name, mi);
                }
                else if (mi.Name.StartsWith("Set", StringComparison.Ordinal))
                {
                    // looks like the return type is *ignored*
                    //if (mi.ReturnType != typeof (void))
                    //	continue;
                    var args = mi.GetParameters();
                    if (args.Length != 2)
                    {
                        continue;
                    }
                    name = mi.Name.Substring(3);
                    sl.Add(name, mi);
                }
                else if (mi.Name.EndsWith("Handler", StringComparison.Ordinal))
                {
                    var args = mi.GetParameters();
                    if (args.Length != 2)
                    {
                        continue;
                    }
                    if (mi.Name.StartsWith("Add", StringComparison.Ordinal))
                    {
                        name = mi.Name.Substring(3, mi.Name.Length - 3 - 7);
                        al.Add(name, mi);
                    }                    /* else if (mi.Name.StartsWith ("Remove", StringComparison.Ordinal)) {
                                          *     name = mi.Name.Substring (6, mi.Name.Length - 6 - 7);
                                          *     rl.Add (name, mi);
                                          * }*/
                }
                if (name != null && !nl.Contains(name))
                {
                    nl.Add(name);
                }
            }

            foreach (var name in nl)
            {
                MethodInfo m;
                var        g = gl.TryGetValue(name, out m) ? m : null;
                var        s = sl.TryGetValue(name, out m) ? m : null;
                if (g != null || s != null)
                {
                    yield return(new XamlMember(name, g, s, SchemaContext));
                }
                var a = al.TryGetValue(name, out m) ? m : null;
                //var r = rl.TryGetValue (name, out m) ? m : null;
                if (a != null)
                {
                    yield return(new XamlMember(name, a, SchemaContext));
                }
            }
        }
Ejemplo n.º 4
0
        /*private IField MakeField(IType type, string name)
         * {
         *      var f = new DefaultUnresolvedField();
         *      f.ReturnType = SpecialType.UnknownType;
         *      f.Name = name;
         *      return new TupleElementField(f, Compilation.TypeResolveContext);
         * }*/

        public override IEnumerable <IMethod> GetMethods(Predicate <IMethod> filter = null, GetMemberOptions options = GetMemberOptions.None)
        {
            return(UnderlyingType.GetMethods(filter, options));
        }