Пример #1
0
		public void FromProperty ()
		{
			var pi = str_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			Assert.AreEqual (pi.GetGetMethod (), i.UnderlyingGetter, "#1");
			Assert.IsNull (i.UnderlyingSetter, "#2");
			Assert.AreEqual (5, i.GetValue ("hello"), "#3");
		}
Пример #2
0
		public void SetValueOnEvent ()
		{
			var ei = ass_load;
			var i = new XamlMemberInvoker (new XamlMember (ei, sctx));
			i.SetValue (AppDomain.CurrentDomain, new AssemblyLoadEventHandler (DummyAssemblyLoad));
		}
Пример #3
0
		public void GetValueOnEvent ()
		{
			var ei = ass_load;
			var i = new XamlMemberInvoker (new XamlMember (ei, sctx));
			i.GetValue (AppDomain.CurrentDomain);
		}
Пример #4
0
		public void SetValueOnIrrelevantObject ()
		{
			var pi = sb_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			i.SetValue ("hello", 5);
		}
Пример #5
0
		public void GetValueOnIrrelevantObject ()
		{
			var pi = str_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			i.GetValue (new StringBuilder ());
		}
Пример #6
0
		public void SetValueOnReadOnlyProperty ()
		{
			var pi = str_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			i.SetValue ("hello", 5);
		}
Пример #7
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;
 }
        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;
        }
Пример #9
0
 public XamlMember(string attachableEventName, MethodInfo adder, XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
     : this(schemaContext, invoker)
 {
     if (attachableEventName == null)
     {
         throw new ArgumentNullException("attachableEventName");
     }
     if (adder == null)
     {
         throw new ArgumentNullException("adder");
     }
     Name = attachableEventName;
     VerifyAdderSetter(adder);
     underlying_member = adder;
     DeclaringType     = schemaContext.GetXamlType(adder.DeclaringType);
     target_type       = schemaContext.GetXamlType(typeof(object));
     UnderlyingSetter  = adder;
     is_event          = true;
     is_attachable     = true;
 }
Пример #10
0
 public XamlMember(PropertyInfo propertyInfo, XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
     : this(schemaContext, invoker)
 {
     if (propertyInfo == null)
     {
         throw new ArgumentNullException("propertyInfo");
     }
     Name = propertyInfo.Name;
     underlying_member = propertyInfo;
     DeclaringType     = schemaContext.GetXamlType(propertyInfo.DeclaringType);
     target_type       = DeclaringType;
     UnderlyingGetter  = propertyInfo.GetGetMethod(true);
     UnderlyingSetter  = propertyInfo.GetSetMethod(true);
 }
Пример #11
0
 public XamlMember(string attachablePropertyName, MethodInfo getter, MethodInfo setter, XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
     : this(schemaContext, invoker)
 {
     if (attachablePropertyName == null)
     {
         throw new ArgumentNullException("attachablePropertyName");
     }
     if (getter == null && setter == null)
     {
         throw new ArgumentNullException("getter", "Either property getter or setter must be non-null.");
     }
     Name = attachablePropertyName;
     VerifyGetter(getter);
     VerifyAdderSetter(setter);
     underlying_member = getter ?? setter;
     DeclaringType     = schemaContext.GetXamlType(underlying_member.DeclaringType);
     target_type       = schemaContext.GetXamlType(typeof(object));
     UnderlyingGetter  = getter;
     UnderlyingSetter  = setter;
     is_attachable     = true;
 }
Пример #12
0
        public XamlMember(ParameterInfo parameterInfo, XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
            : this(schemaContext, invoker)
        {
            var declaringType = schemaContext.GetXamlType(parameterInfo.Member.DeclaringType);

            Name          = parameterInfo.Name;
            context       = declaringType.SchemaContext;
            DeclaringType = declaringType;
            target_type   = DeclaringType;
            type          = schemaContext.GetXamlType(parameterInfo.ParameterType);
        }
Пример #13
0
 internal ValueNodeXamlMemberInvoker(XamlDebuggerXmlReader parent, XamlMemberInvoker wrapped, DocumentRange attributeValueRange)
 {
     this.parent              = parent;
     this.wrapped             = wrapped;
     this.attributeValueRange = attributeValueRange;
 }
Пример #14
0
 internal static XamlMember ReplaceXamlMemberInvoker(this XamlMember originalXamlMember, XamlSchemaContext schemaContext, XamlMemberInvoker newInvoker)
 {
     if (originalXamlMember.IsEvent)
     {
         if (originalXamlMember.IsAttachable)
         {
             UnitTestUtility.Assert(originalXamlMember.UnderlyingMember is MethodInfo, "Guaranteed by XamlMember.");
             return(new XamlMember(originalXamlMember.Name, originalXamlMember.UnderlyingMember as MethodInfo, schemaContext, newInvoker));
         }
         else
         {
             UnitTestUtility.Assert(originalXamlMember.UnderlyingMember is EventInfo, "Guaranteed by XamlMember.");
             return(new XamlMember(originalXamlMember.UnderlyingMember as EventInfo, schemaContext, newInvoker));
         }
     }
     else if (originalXamlMember.IsDirective)
     {
         return(originalXamlMember);
     }
     else if (originalXamlMember.IsUnknown)
     {
         return(originalXamlMember);
     }
     else
     {
         if (originalXamlMember.IsAttachable)
         {
             MethodInfo attachablePropertyMethod = originalXamlMember.UnderlyingMember as MethodInfo;
             if (attachablePropertyMethod.ReturnType == typeof(void))
             {
                 return(new XamlMember(originalXamlMember.Name, null, originalXamlMember.UnderlyingMember as MethodInfo, schemaContext, newInvoker));
             }
             else
             {
                 return(new XamlMember(originalXamlMember.Name, originalXamlMember.UnderlyingMember as MethodInfo, null, schemaContext, newInvoker));
             }
         }
         else
         {
             PropertyInfo propertyInfo = originalXamlMember.UnderlyingMember as PropertyInfo;
             if (propertyInfo != null)
             {
                 return(new XamlMember(propertyInfo, schemaContext, newInvoker));
             }
             else
             {
                 return(originalXamlMember);
             }
         }
     }
 }
		public void GetValueOnIrrelevantObject ()
		{
			var pi = str_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			Assert.Throws<TargetException> (() => i.GetValue (new StringBuilder ()));
		}
Пример #16
0
		public void SetValueNullObject ()
		{
			var pi = sb_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			i.SetValue (null, 5);
		}
		public void SetValueOnIrrelevantObject ()
		{
			var pi = sb_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			Assert.Throws<TargetException> (() => i.SetValue ("hello", 5));
		}
Пример #18
0
 public XamlMember(PropertyInfo propertyInfo, XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
     : this(propertyInfo, schemaContext, invoker, new MemberReflector(false /*isEvent*/))
 {
 }
		public void GetValueOnEvent ()
		{
			var ei = ass_load;
			var i = new XamlMemberInvoker (new XamlMember (ei, sctx));
			Assert.Throws<NotSupportedException> (() => i.GetValue (AppDomain.CurrentDomain));
		}
Пример #20
0
 public XamlMember(EventInfo eventInfo, XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
     : this(eventInfo, schemaContext, invoker, new MemberReflector(true /*isEvent*/))
 {
 }
		public void SetValueOnEventValueMismatch ()
		{
			var ei = ass_load;
			var i = new XamlMemberInvoker (new XamlMember (ei, sctx));
			Assert.Throws<ArgumentException> (() => i.SetValue (AppDomain.CurrentDomain, 5));
		}
Пример #22
0
		public void SetValueOnReadWriteProperty ()
		{
			var pi = sb_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			var sb = new StringBuilder ();
			i.SetValue (sb, 5);
			Assert.AreEqual (5, sb.Length, "#1");
		}
		public void UnderlyingSetter ()
		{
			var i = new XamlMemberInvoker (new MyXamlMember (str_len, sctx));
			// call XamlMember's UnderlyingSetter.
			Assert.Throws<MyException> (() => { var t = i.UnderlyingSetter; }, "#1");
		}
Пример #24
0
		public void GetValueOnTypeValue ()
		{
			var xm = XamlLanguage.Type.GetMember ("Type");
			var i = new XamlMemberInvoker (xm);
			var o = i.GetValue (new TypeExtension (typeof (int)));
			Assert.AreEqual (typeof (int), o, "#1");
		}
		public void SetValueNullObject ()
		{
			var pi = sb_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			Assert.Throws<ArgumentNullException> (() => i.SetValue (null, 5));
		}
Пример #26
0
		public void FromEvent ()
		{
			var ei = ass_load;
			var i = new XamlMemberInvoker (new XamlMember (ei, sctx));
			Assert.IsNull (i.UnderlyingGetter, "#1");
			Assert.AreEqual (ei.GetAddMethod (), i.UnderlyingSetter, "#2");
		}
		public void GetValueOnWriteOnlyProperty ()
		{
			var pi = xr_resolver;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			Assert.Throws<NotSupportedException> (() => i.GetValue (new XmlUrlResolver ()));
		}
Пример #28
0
		public void SetValueOnEventValueMismatch ()
		{
			var ei = ass_load;
			var i = new XamlMemberInvoker (new XamlMember (ei, sctx));
			i.SetValue (AppDomain.CurrentDomain, 5);
		}
		public void SetValueOnReadOnlyProperty ()
		{
			var pi = str_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			Assert.Throws<NotSupportedException> (() => i.SetValue ("hello", 5));
		}
Пример #30
0
		public void UnderlyingSetter ()
		{
			var i = new XamlMemberInvoker (new MyXamlMember (str_len, sctx));
			// call XamlMember's UnderlyingSetter.
			Assert.IsNull (i.UnderlyingSetter, "#1");
		}
Пример #31
0
 public XamlMember(string attachablePropertyName, MethodInfo getter, MethodInfo setter,
                   XamlSchemaContext schemaContext, XamlMemberInvoker invoker)
     : this(attachablePropertyName, getter, setter, schemaContext, invoker, new MemberReflector(getter, setter, false /*isEvent*/))
 {
 }
Пример #32
0
		public void GetValueNullObject ()
		{
			var pi = str_len;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			i.GetValue (null);
		}
Пример #33
0
 public XamlMember(string attachableEventName, MethodInfo adder, XamlSchemaContext schemaContext,
                   XamlMemberInvoker invoker)
     : this(attachableEventName, adder, schemaContext, invoker, new MemberReflector(null, adder, true /*isEvent*/))
 {
 }
Пример #34
0
		public void GetValueOnWriteOnlyProperty ()
		{
			var pi = xr_resolver;
			var i = new XamlMemberInvoker (new XamlMember (pi, sctx));
			i.GetValue (new XmlUrlResolver ());
		}
 internal XamlMember(string attachableEventName, MethodInfo adder, XamlSchemaContext schemaContext, XamlMemberInvoker invoker, MemberReflector reflector)
 {
     if (attachableEventName == null)
     {
         throw new ArgumentNullException("attachableEventName");
     }
     if (adder == null)
     {
         throw new ArgumentNullException("adder");
     }
     if (schemaContext == null)
     {
         throw new ArgumentNullException("schemaContext");
     }
     ValidateSetter(adder, "adder");
     this._name                   = attachableEventName;
     this._declaringType          = schemaContext.GetXamlType(adder.DeclaringType);
     this._reflector              = reflector;
     this._memberType             = MemberType.Attachable;
     this._reflector.Invoker      = invoker;
     this._underlyingMember.Value = adder;
 }