The Labs \ Source Viewer \ SSCLI \ Microsoft.JScript \ JSParameterInfo

  1. // ==++==
  2. //
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. //
  14. // ==--==
  15. namespace Microsoft.JScript
  16. {
  17.     using System;
  18.     using System.Reflection;
  19.    
  20.     internal sealed class JSParameterInfo : ParameterInfo
  21.     {
  22.         private ParameterInfo parameter;
  23.         private Type parameterType;
  24.         private object[] attributes = null;
  25.        
  26.         internal JSParameterInfo(ParameterInfo parameter)
  27.         {
  28.             this.parameter = parameter;
  29.         }
  30.        
  31.         public override object DefaultValue {
  32.             get { return TypeReferences.GetDefaultParameterValue(parameter); }
  33.         }
  34.        
  35.         public override sealed object[] GetCustomAttributes(bool inherit)
  36.         {
  37.             object[] attrs = this.attributes;
  38.             if (attrs != null)
  39.                 return attrs;
  40.             return this.attributes = this.parameter.GetCustomAttributes(true);
  41.         }
  42.        
  43.         public override sealed object[] GetCustomAttributes(Type type, bool inherit)
  44.         {
  45.             Debug.PreCondition(type == typeof(ParamArrayAttribute));
  46.             object[] attrs = this.attributes;
  47.             if (attrs != null)
  48.                 return attrs;
  49.             return this.attributes = CustomAttribute.GetCustomAttributes(this.parameter, type, true);
  50.         }
  51.        
  52.         public override sealed bool IsDefined(Type type, bool inherit)
  53.         {
  54.             Debug.PreCondition(type == typeof(ParamArrayAttribute));
  55.             object[] attrs = this.attributes;
  56.             if (attrs == null)
  57.                 this.attributes = attrs = CustomAttribute.GetCustomAttributes(this.parameter, type, true);
  58.             return attrs.Length > 0;
  59.         }
  60.        
  61.         public override string Name {
  62.             get { return this.parameter.Name; }
  63.         }
  64.        
  65.         public override Type ParameterType {
  66.             get {
  67.                 Type result = this.parameterType;
  68.                 if (result != null)
  69.                     return result;
  70.                 return this.parameterType = this.parameter.ParameterType;
  71.             }
  72.         }
  73.        
  74.     }
  75. }

Developer Fusion