@@ -464,6 +464,80 @@ public void GenericParameterConstraint ()
464464			} ,  verify :  ! Platform . OnMono ) ; 
465465		} 
466466
467+ 		[ Test ] 
468+ 		public  void  GenericAttributeString  ( ) 
469+ 		{ 
470+ 			TestModule  ( "GenericAttributes.dll" ,  module =>  { 
471+ 				var  type  =  module . GetType  ( "WithGenericAttribute_OfString" ) ; 
472+ 				Assert . IsTrue  ( type . HasCustomAttributes ) ; 
473+ 				var  attributes  =  type . CustomAttributes ; 
474+ 				Assert . AreEqual  ( 1 ,  attributes . Count ) ; 
475+ 				Assert . AreEqual  ( "GenericAttribute`1<System.String>" ,  attributes  [ 0 ] . AttributeType . FullName ) ; 
476+ 				var  attribute  =  attributes  [ 0 ] ; 
477+ 				// constructor arguments 
478+ 				Assert . AreEqual  ( true ,  attribute . HasConstructorArguments ) ; 
479+ 				var  argument  =  attribute . ConstructorArguments . Single  ( ) ; 
480+ 				Assert . AreEqual  ( "System.String" ,  argument . Type . FullName ) ; 
481+ 				Assert . AreEqual  ( "t" ,  argument . Value ) ; 
482+ 				// named field argument 
483+ 				Assert . AreEqual  ( true ,  attribute . HasFields ) ; 
484+ 				var  field  =  attribute . Fields . Single  ( ) ; 
485+ 				Assert . AreEqual  ( "F" ,  field . Name ) ; 
486+ 				Assert . AreEqual  ( "System.String" ,  field . Argument . Type . FullName ) ; 
487+ 				Assert . AreEqual  ( "f" ,  field . Argument . Value ) ; 
488+ 				// named property argument 
489+ 				Assert . AreEqual  ( true ,  attribute . HasProperties ) ; 
490+ 				var  property  =  attribute . Properties . Single  ( ) ; 
491+ 				Assert . AreEqual  ( "P" ,  property . Name ) ; 
492+ 				Assert . AreEqual  ( "System.String" ,  property . Argument . Type . FullName ) ; 
493+ 				Assert . AreEqual  ( "p" ,  property . Argument . Value ) ; 
494+ 				
495+ 			} ,  verify :  ! Platform . OnMono ) ; 
496+ 		} 
497+ 
498+ 		[ Test ] 
499+ 		public  void  GenericAttributeInt  ( ) 
500+ 		{ 
501+ 			TestModule  ( "GenericAttributes.dll" ,  module =>  { 
502+ 				var  type  =  module . GetType  ( "WithGenericAttribute_OfInt" ) ; 
503+ 				Assert . IsTrue  ( type . HasCustomAttributes ) ; 
504+ 				var  attributes  =  type . CustomAttributes ; 
505+ 				Assert . AreEqual  ( 1 ,  attributes . Count ) ; 
506+ 				Assert . AreEqual  ( "GenericAttribute`1<System.Int32>" ,  attributes  [ 0 ] . AttributeType . FullName ) ; 
507+ 				var  attribute  =  attributes  [ 0 ] ; 
508+ 				// constructor arguments 
509+ 				Assert . AreEqual  ( true ,  attribute . HasConstructorArguments ) ; 
510+ 				var  argument  =  attribute . ConstructorArguments . Single  ( ) ; 
511+ 				Assert . AreEqual  ( "System.Int32" ,  argument . Type . FullName ) ; 
512+ 				Assert . AreEqual  ( 1 ,  argument . Value ) ; 
513+ 				// named field argument 
514+ 				Assert . AreEqual  ( true ,  attribute . HasFields ) ; 
515+ 				var  field  =  attribute . Fields . Single  ( ) ; 
516+ 				Assert . AreEqual  ( "F" ,  field . Name ) ; 
517+ 				Assert . AreEqual  ( "System.Int32" ,  field . Argument . Type . FullName ) ; 
518+ 				Assert . AreEqual  ( 2 ,  field . Argument . Value ) ; 
519+ 				// named property argument 
520+ 				Assert . AreEqual  ( true ,  attribute . HasProperties ) ; 
521+ 				var  property  =  attribute . Properties . Single  ( ) ; 
522+ 				Assert . AreEqual  ( "P" ,  property . Name ) ; 
523+ 				Assert . AreEqual  ( "System.Int32" ,  property . Argument . Type . FullName ) ; 
524+ 				Assert . AreEqual  ( 3 ,  property . Argument . Value ) ; 				
525+ 			} ,  verify :  ! Platform . OnMono ) ; 
526+ 		} 
527+ 
528+ 		[ Test ] 
529+ 		public  void  ConstrainedGenericAttribute  ( ) 
530+ 		{ 
531+ 			TestModule  ( "GenericAttributes.dll" ,  module =>  { 
532+ 				var  type  =  module . GetType  ( "WithConstrainedGenericAttribute" ) ; 
533+ 				Assert . IsTrue  ( type . HasCustomAttributes ) ; 
534+ 				var  attributes  =  type . CustomAttributes ; 
535+ 				Assert . AreEqual  ( 1 ,  attributes . Count ) ; 
536+ 				var  attribute  =  attributes  [ 0 ] ; 
537+ 				Assert . AreEqual  ( "ConstrainedGenericAttribute`1<DerivedFromConstraintType>" ,  attribute . AttributeType . FullName ) ; 
538+ 			} ,  verify :  ! Platform . OnMono ) ; 
539+ 		} 
540+ 
467541		[ Test ] 
468542		public  void  NullCharInString  ( ) 
469543		{ 
0 commit comments