protected internal override XamlMember GetAttachableProperty(string attachablePropertyName, MethodInfo getter, MethodInfo setter)
        {
            var key = MemberKey.Create(getter ?? setter, attachablePropertyName, "a");

            XamlMember result;

            if (_cachedMembers.TryGetValue(key, out result))
            {
                return(result);
            }

            var type = (getter ?? setter).DeclaringType;

            var prop = AvaloniaPropertyRegistry.Instance.FindRegistered(type, attachablePropertyName);

            if (prop != null)
            {
                result = new AvaloniaAttachedPropertyXamlMember(
                    prop, attachablePropertyName,
                    getter, setter, this);
            }

            if (result == null)
            {
                result = base.GetAttachableProperty(attachablePropertyName, getter, setter);
            }

            return(_cachedMembers[key] = result);
        }
            public override bool Equals(object obj)
            {
                if (obj == null)
                {
                    return(false);
                }

                MemberKey key = obj as MemberKey;

                if (key == null)
                {
                    return(false);
                }

                if (type != key.Type)
                {
                    return(false);
                }

                if (name != key.Name)
                {
                    return(false);
                }

                return(true);
            }
        protected internal override XamlMember GetProperty(PropertyInfo pi)
        {
            Type   objType = pi.DeclaringType;
            string name    = pi.Name;

            XamlMember result;

            var key = MemberKey.Create(pi, "p");

            if (_cachedMembers.TryGetValue(key, out result))
            {
                return(result);
            }

            var avProp = AvaloniaPropertyRegistry.Instance.FindRegistered(objType, name);

            if (avProp != null)
            {
                result = new AvaloniaPropertyXamlMember(avProp, pi, this);
            }

            if (result == null)
            {
                result = new PropertyXamlMember(pi, this);
            }

            return(_cachedMembers[key] = result);
        }
Exemple #4
0
        /// <summary>
        /// SQLWhereMember ใช้สำหรับสร้าง SQLWhere : Member ของ ViewBag.CMSMemberID
        /// </summary>
        /// <param name="MemberKey">enum MemberKey</param>
        /// <returns>SQLWhere</returns>
        public string SQLWhereMember(MemberKey MemberKey)
        {
            string SQLWhere = string.Empty;

            SQLWhere = string.Concat(" AND ", MemberKey.ToString(), " = ", ViewBag.CMSMemberID);
            return(SQLWhere);
        }
Exemple #5
0
        public static MemberTracker FromMemberInfo(MemberInfo member, Type extending)
        {
            ContractUtils.RequiresNotNull(member, nameof(member));

            lock (_trackers) {
                MemberTracker res;
                MemberKey     key = new MemberKey(member, extending);
                if (_trackers.TryGetValue(key, out res))
                {
                    return(res);
                }

                ConstructorInfo ctor;
                EventInfo       evnt;
                FieldInfo       field;
                MethodInfo      method;
                TypeInfo        type;
                PropertyInfo    property;

                if ((method = member as MethodInfo) != null)
                {
                    if (extending != null)
                    {
                        res = new ExtensionMethodTracker(method, member.IsDefined(typeof(StaticExtensionMethodAttribute), false), extending);
                    }
                    else
                    {
                        res = new MethodTracker(method);
                    }
                }
                else if ((ctor = member as ConstructorInfo) != null)
                {
                    res = new ConstructorTracker(ctor);
                }
                else if ((field = member as FieldInfo) != null)
                {
                    res = new FieldTracker(field);
                }
                else if ((property = member as PropertyInfo) != null)
                {
                    res = new ReflectedPropertyTracker(property);
                }
                else if ((evnt = member as EventInfo) != null)
                {
                    res = new EventTracker(evnt);
                }
                else if ((type = member as TypeInfo) != null)
                {
                    res = new NestedTypeTracker(type);
                }
                else
                {
                    throw Error.UnknownMemberType(member);
                }

                _trackers[key] = res;
                return(res);
            }
        }
Exemple #6
0
        private string ConvertToKey(string account, string password)
        {
            MemberKey memberKey = new MemberKey()
            {
                Account = account, Password = password
            };

            return(JsonConvert.SerializeObject(memberKey));
        }
        internal static object GetPrivateProperty(this object self, string name)
        {
            MemberKey key = new MemberKey(self.GetType(), name);

            if (_propertyCache.TryGetValue(key, out PropertyInfo info) == false)
            {
                info = key.type.GetProperty(key.name, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy);
                _propertyCache.Add(key, info);
            }
            return(info.GetValue(self, null));
        }
Exemple #8
0
            public override bool Equals(object obj)
            {
                MemberKey other = obj as MemberKey;

                if (other == null)
                {
                    return(false);
                }

                return(other.Member == Member &&
                       other.Extending == Extending);
            }
        public static object GetPrivate(this object self, string name)
        {
            MemberKey key = new MemberKey(self.GetType(), name);
            FieldInfo info;

            if (_fieldCache.TryGetValue(key, out info) == false)
            {
                info = key.type.GetField(key.name, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy);
                _fieldCache.Add(key, info);
            }
            return(info.GetValue(self));
        }
        public static void SetPrivateProperty(this object self, string name, object value)
        {
            MemberKey    key = new MemberKey(self.GetType(), name);
            PropertyInfo info;

            if (_propertyCache.TryGetValue(key, out info) == false)
            {
                info = key.type.GetProperty(key.name, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy);
                _propertyCache.Add(key, info);
            }
            info.SetValue(self, value, null);
        }
        public static void SetPrivateExplicit <T>(this T self, string name, object value)
        {
            MemberKey key = new MemberKey(typeof(T), name);
            FieldInfo info;

            if (_fieldCache.TryGetValue(key, out info) == false)
            {
                info = key.type.GetField(key.name, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy);
                _fieldCache.Add(key, info);
            }
            info.SetValue(self, value);
        }
        public TValue GetMember <TValue>(string name)
        {
            MemberKey key = new MemberKey(name, typeof(TValue));

            object result;

            if (members.TryGetValue(key, out result))
            {
                return((TValue)result);;
            }

            return(default(TValue));
        }
            public TypeMetadata AddMemberAttributes(MemberKey key, IEnumerable <Attribute> attributes)
            {
                IImmutableList <Attribute> list;

                if (!MemberAttributes.TryGetValue(key, out list))
                {
                    list = ImmutableList.CreateRange <Attribute>(attributes);
                }
                else
                {
                    list = list.AddRange(attributes);
                }

                return(new TypeMetadata(TypeAttributes, MemberAttributes.SetItem(key, list), MethodAttributes));
            }
Exemple #14
0
        public static MemberTracker FromMemberInfo(MemberInfo member, Type extending)
        {
            ContractUtils.RequiresNotNull(member, "member");

            lock (_trackers) {
                MemberTracker res;
                MemberKey     key = new MemberKey(member, extending);
                if (_trackers.TryGetValue(key, out res))
                {
                    return(res);
                }

                switch (member.MemberType)
                {
                case MemberTypes.Constructor: res = new ConstructorTracker((ConstructorInfo)member); break;

                case MemberTypes.Event: res = new EventTracker((EventInfo)member); break;

                case MemberTypes.Field: res = new FieldTracker((FieldInfo)member); break;

                case MemberTypes.Method:
                    MethodInfo mi = (MethodInfo)member;
                    if (extending != null)
                    {
                        res = new ExtensionMethodTracker(mi, member.IsDefined(typeof(StaticExtensionMethodAttribute), false), extending);
                    }
                    else
                    {
                        res = new MethodTracker(mi);
                    }
                    break;

                case MemberTypes.TypeInfo:
                case MemberTypes.NestedType: res = new NestedTypeTracker((Type)member); break;

                case MemberTypes.Property: res = new ReflectedPropertyTracker((PropertyInfo)member); break;

                default: throw Error.UnknownMemberType(member.MemberType);
                }

                _trackers[key] = res;
                return(res);
            }
        }
Exemple #15
0
        /// <summary>
        /// Returns the member value (property, field or indexer) of the specified object.
        /// </summary>
        /// <param name="o">The object whose member value will be returned.</param>
        /// <param name="name">property name, field name or indexer parameter</param>
        /// <returns>The member value of the specified object.</returns>
        public object GetValue(object o, string name)
        {
            if (o == null)
            {
                return(null);
            }
            var t   = o.GetType();
            var key = new MemberKey(t, name);

            Func <object, object> getVal;

            if (!GetCache.TryGetValue(key, out getVal))
            {
                var members = t.GetMembers();
                foreach (var m in members)
                {
                    if (m.Name == name && (m.MemberType == MemberTypes.Property || m.MemberType == MemberTypes.Field))
                    {
                        getVal = GetPropAccessor(t, name);
                        break;
                    }
                    if (m is PropertyInfo)
                    {
                        var p           = (PropertyInfo)m;
                        var indexParams = p.GetIndexParameters();
                        if (indexParams.Length == 1 &&
                            (indexParams[0].ParameterType == typeof(object) || indexParams[0].ParameterType == typeof(string)))
                        {
                            getVal = GetIndexerAccessor(t, p, name);
                        }
                    }
                }
                if (getVal == null)
                {
                    throw new InvalidOperationException(String.Format("Member '{0}' does not exists in {1}", name, t.FullName));
                }
                GetCache[key] = getVal;
            }

            return(getVal(o));
        }
 private Type FindType(MemberKey key)
 {
   return _typeRepository.FindType(key.TypeKey);
 }
Exemple #17
0
        public static MemberTracker FromMemberInfo(MemberInfo member, Type extending)
        {
            ContractUtils.RequiresNotNull(member, "member");

            lock (_trackers) {
                MemberTracker res;
                MemberKey key = new MemberKey(member, extending);
                if (_trackers.TryGetValue(key, out res)) {
                    return res;
                }

                ConstructorInfo ctor;
                EventInfo evnt;
                FieldInfo field;
                MethodInfo method;
                TypeInfo type;
                PropertyInfo property;

                if ((method = member as MethodInfo) != null) {
                    if (extending != null) {
                        res = new ExtensionMethodTracker(method, member.IsDefined(typeof(StaticExtensionMethodAttribute), false), extending);
                    } else {
                        res = new MethodTracker(method);
                    }
                } else if ((ctor = member as ConstructorInfo) != null) {
                    res = new ConstructorTracker(ctor);
                } else if ((field = member as FieldInfo) != null) {
                    res = new FieldTracker(field);
                } else if ((property = member as PropertyInfo) != null) {
                    res = new ReflectedPropertyTracker(property);
                } else if ((evnt = member as EventInfo) != null) {
                    res = new EventTracker(evnt);
                } else if ((type = member as TypeInfo) != null) {
                    res = new NestedTypeTracker(type.AsType());
                } else {
                    throw Error.UnknownMemberType(member);
                }

                _trackers[key] = res;
                return res;
            }
        }
Exemple #18
0
 private protected sealed override TDescriptor?Create(MemberKey key) => Create(key.Name, key.NonPublic);
Exemple #19
0
        public static MemberTracker FromMemberInfo(MemberInfo member, Type extending) {
            ContractUtils.RequiresNotNull(member, "member");

            lock (_trackers) {
                MemberTracker res;
                MemberKey key = new MemberKey(member, extending);
                if (_trackers.TryGetValue(key, out res)) return res;

                switch (member.MemberType) {
                    case MemberTypes.Constructor: res = new ConstructorTracker((ConstructorInfo)member); break;
                    case MemberTypes.Event: res = new EventTracker((EventInfo)member); break;
                    case MemberTypes.Field: res = new FieldTracker((FieldInfo)member); break;
                    case MemberTypes.Method:
                        MethodInfo mi = (MethodInfo)member;
                        if (extending != null) {
                            res = new ExtensionMethodTracker(mi, member.IsDefined(typeof(StaticExtensionMethodAttribute), false), extending);
                        } else {
                            res = new MethodTracker(mi);
                        }
                        break;
                    case MemberTypes.TypeInfo:
                    case MemberTypes.NestedType: res = new NestedTypeTracker((Type)member); break;
                    case MemberTypes.Property: res = new ReflectedPropertyTracker((PropertyInfo)member); break;
                    default: throw Error.UnknownMemberType(member.MemberType);
                }

                _trackers[key] = res;
                return res;
            }
        }
        public bool Contains <TValue>(string name)
        {
            MemberKey key = new MemberKey(name, typeof(TValue));

            return(members.ContainsKey(key));
        }
Exemple #21
0
 public DynamicVariableBinder(MemberKey key, System.Runtime.CompilerServices.IRuntimeVariables target)
 {
     this.key    = key;
     this.target = target;
 }
        public void SetMember <TValue>(TValue value, string name)
        {
            MemberKey key = new MemberKey(name, typeof(TValue));

            members[key] = value;
        }