Esempio n. 1
0
        private void CreateReflector()
        {
            bool            isUnknown = LookupIsUnknown();
            MemberReflector reflector = isUnknown ? MemberReflector.UnknownReflector : new MemberReflector();

            Interlocked.CompareExchange(ref _reflector, reflector, null);
        }
Esempio n. 2
0
        internal XamlMember(string attachablePropertyName, MethodInfo getter, MethodInfo setter,
                            XamlSchemaContext schemaContext, XamlMemberInvoker invoker, MemberReflector reflector)
        {
            if (attachablePropertyName == null)
            {
                throw new ArgumentNullException("attachablePropertyName");
            }
            if (schemaContext == null)
            {
                throw new ArgumentNullException("schemaContext");
            }
            MethodInfo accessor = getter ?? setter;

            if (accessor == null)
            {
                throw new ArgumentNullException(SR.Get(SRID.GetterOrSetterRequired), (Exception)null);
            }
            ValidateGetter(getter, "getter");
            ValidateSetter(setter, "setter");

            _name                   = attachablePropertyName;
            _declaringType          = schemaContext.GetXamlType(accessor.DeclaringType);
            _reflector              = reflector;
            _memberType             = MemberType.Attachable;
            _reflector.Invoker      = invoker;
            _underlyingMember.Value = getter ?? setter;
        }
Esempio n. 3
0
 // Directive, only called from XamlDirective
 internal XamlMember(string name, MemberReflector reflector)
 {
     _name          = name;
     _declaringType = null;
     _reflector     = reflector ?? MemberReflector.UnknownReflector;
     _memberType    = MemberType.Directive;
 }
        internal XamlMember(string attachablePropertyName, MethodInfo getter, MethodInfo setter, XamlSchemaContext schemaContext, XamlMemberInvoker invoker, MemberReflector reflector)
        {
            if (attachablePropertyName == null)
            {
                throw new ArgumentNullException("attachablePropertyName");
            }
            if (schemaContext == null)
            {
                throw new ArgumentNullException("schemaContext");
            }
            MethodInfo info = getter ?? setter;

            if (info == null)
            {
                throw new ArgumentNullException(System.Xaml.SR.Get("GetterOrSetterRequired"), null);
            }
            ValidateGetter(getter, "getter");
            ValidateSetter(setter, "setter");
            this._name                   = attachablePropertyName;
            this._declaringType          = schemaContext.GetXamlType(info.DeclaringType);
            this._reflector              = reflector;
            this._memberType             = MemberType.Attachable;
            this._reflector.Invoker      = invoker;
            this._underlyingMember.Value = getter ?? setter;
        }
Esempio n. 5
0
        // See notes on IsReadVisibleTo
        internal bool IsWriteVisibleTo(Assembly accessingAssembly, Type accessingType)
        {
            if (IsWritePublicIgnoringType)
            {
                return(true);
            }
            MethodInfo setter = Setter;

            if (setter != null)
            {
                return(MemberReflector.GenericArgumentsAreVisibleTo(setter, accessingAssembly, SchemaContext) &&
                       (MemberReflector.IsInternalVisibleTo(setter, accessingAssembly, SchemaContext) ||
                        MemberReflector.IsProtectedVisibleTo(setter, accessingType, SchemaContext)));
            }
            return(false);
        }
Esempio n. 6
0
 internal XamlMember(PropertyInfo propertyInfo, XamlSchemaContext schemaContext, XamlMemberInvoker invoker, MemberReflector reflector)
 {
     if (propertyInfo == null)
     {
         throw new ArgumentNullException(nameof(propertyInfo));
     }
     if (schemaContext == null)
     {
         throw new ArgumentNullException(nameof(schemaContext));
     }
     _name                   = propertyInfo.Name;
     _declaringType          = schemaContext.GetXamlType(propertyInfo.DeclaringType);
     _memberType             = MemberType.Instance;
     _reflector              = reflector;
     _reflector.Invoker      = invoker;
     _underlyingMember.Value = propertyInfo;
 }
Esempio n. 7
0
 internal XamlMember(EventInfo eventInfo, XamlSchemaContext schemaContext, XamlMemberInvoker invoker, MemberReflector reflector)
 {
     if (eventInfo == null)
     {
         throw new ArgumentNullException("eventInfo");
     }
     if (schemaContext == null)
     {
         throw new ArgumentNullException("schemaContext");
     }
     _name                   = eventInfo.Name;
     _declaringType          = schemaContext.GetXamlType(eventInfo.DeclaringType);
     _memberType             = MemberType.Instance;
     _reflector              = reflector;
     _reflector.Invoker      = invoker;
     _underlyingMember.Value = eventInfo;
 }
Esempio n. 8
0
        internal XamlMember(string attachableEventName, MethodInfo adder, XamlSchemaContext schemaContext,
                            XamlMemberInvoker invoker, MemberReflector reflector)
        {
            if (adder == null)
            {
                throw new ArgumentNullException(nameof(adder));
            }
            if (schemaContext == null)
            {
                throw new ArgumentNullException(nameof(schemaContext));
            }
            ValidateSetter(adder, "adder");

            _name                   = attachableEventName ?? throw new ArgumentNullException(nameof(attachableEventName));
            _declaringType          = schemaContext.GetXamlType(adder.DeclaringType);
            _reflector              = reflector;
            _memberType             = MemberType.Attachable;
            _reflector.Invoker      = invoker;
            _underlyingMember.Value = adder;
        }
 internal bool IsWriteVisibleTo(Assembly accessingAssembly, System.Type accessingType)
 {
     if (!this.IsWritePublicIgnoringType)
     {
         MethodInfo setter = this.Setter;
         if (setter == null)
         {
             return(false);
         }
         if (!MemberReflector.GenericArgumentsAreVisibleTo(setter, accessingAssembly, this.SchemaContext))
         {
             return(false);
         }
         if (!MemberReflector.IsInternalVisibleTo(setter, accessingAssembly, this.SchemaContext))
         {
             return(MemberReflector.IsProtectedVisibleTo(setter, accessingType, this.SchemaContext));
         }
     }
     return(true);
 }
 private static XamlDirective GetXamlDirective(string name, AllowedMemberLocations allowedLocation, MemberReflector reflector)
 {
     return(new XamlDirective(s_xamlNamespaces, name, allowedLocation, reflector));
 }
Esempio n. 11
0
 internal XamlDirective(IEnumerable <string> xamlNamespaces, string name, AllowedMemberLocations allowedLocation, MemberReflector reflector)
     : base(name, reflector)
 {
     _xamlNamespaces  = GetReadOnly(xamlNamespaces);
     _allowedLocation = allowedLocation;
 }
        private void CreateReflector()
        {
            MemberReflector reflector = this.LookupIsUnknown() ? MemberReflector.UnknownReflector : new MemberReflector();

            Interlocked.CompareExchange <MemberReflector>(ref this._reflector, reflector, null);
        }