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); }
/// <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); }
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); } }
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)); }
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)); }
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); } }
/// <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); }
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; } }
private protected sealed override TDescriptor?Create(MemberKey key) => Create(key.Name, key.NonPublic);
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)); }
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; }