Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Reflection / Emit / PropertyBuilder.cs / 1305376 / PropertyBuilder.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: PropertyBuilder ** **[....] ** ** ** Propertybuilder is for client to define properties for a class ** ** ===========================================================*/ namespace System.Reflection.Emit { using System; using System.Reflection; using CultureInfo = System.Globalization.CultureInfo; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Diagnostics.Contracts; // // A PropertyBuilder is always associated with a TypeBuilder. The TypeBuilder.DefineProperty // method will return a new PropertyBuilder to a client. // [HostProtection(MayLeakOnAbort = true)] [ClassInterface(ClassInterfaceType.None)] [ComDefaultInterface(typeof(_PropertyBuilder))] [System.Runtime.InteropServices.ComVisible(true)] public sealed class PropertyBuilder : PropertyInfo, _PropertyBuilder { // Make a private constructor so these cannot be constructed externally. private PropertyBuilder() {} // Constructs a PropertyBuilder. // internal PropertyBuilder( ModuleBuilder mod, // the module containing this PropertyBuilder String name, // property name SignatureHelper sig, // property signature descriptor info PropertyAttributes attr, // property attribute such as DefaultProperty, Bindable, DisplayBind, etc Type returnType, // return type of the property. PropertyToken prToken, // the metadata token for this property TypeBuilder containingType) // the containing type { if (name == null) throw new ArgumentNullException("name"); if (name.Length == 0) throw new ArgumentException(Environment.GetResourceString("Argument_EmptyName"), "name"); if (name[0] == '\0') throw new ArgumentException(Environment.GetResourceString("Argument_IllegalName"), "name"); Contract.EndContractBlock(); m_name = name; m_moduleBuilder = mod; m_signature = sig; m_attributes = attr; m_returnType = returnType; m_prToken = prToken; m_tkProperty = prToken.Token; m_containingType = containingType; } //************************************************ // Set the default value of the Property //************************************************ [System.Security.SecuritySafeCritical] // auto-generated public void SetConstant(Object defaultValue) { m_containingType.ThrowIfCreated(); TypeBuilder.SetConstantValue( m_moduleBuilder, m_prToken.Token, m_returnType, defaultValue); } // Return the Token for this property within the TypeBuilder that the // property is defined within. public PropertyToken PropertyToken { get {return m_prToken;} } internal int MetadataTokenInternal { get { return m_tkProperty; } } public override Module Module { get { return m_containingType.Module; } } [System.Security.SecurityCritical] // auto-generated private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttributes semantics) { if (mdBuilder == null) { throw new ArgumentNullException("mdBuilder"); } m_containingType.ThrowIfCreated(); TypeBuilder.DefineMethodSemantics( m_moduleBuilder.GetNativeHandle(), m_prToken.Token, semantics, mdBuilder.GetToken().Token); } [System.Security.SecuritySafeCritical] // auto-generated public void SetGetMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Getter); m_getMethod = mdBuilder; } [System.Security.SecuritySafeCritical] // auto-generated public void SetSetMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Setter); m_setMethod = mdBuilder; } [System.Security.SecuritySafeCritical] // auto-generated public void AddOtherMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Other); } // Use this function if client decides to form the custom attribute blob themselves [System.Security.SecuritySafeCritical] // auto-generated [System.Runtime.InteropServices.ComVisible(true)] public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { if (con == null) throw new ArgumentNullException("con"); if (binaryAttribute == null) throw new ArgumentNullException("binaryAttribute"); m_containingType.ThrowIfCreated(); TypeBuilder.DefineCustomAttribute( m_moduleBuilder, m_prToken.Token, m_moduleBuilder.GetConstructorToken(con).Token, binaryAttribute, false, false); } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder [System.Security.SecuritySafeCritical] // auto-generated public void SetCustomAttribute(CustomAttributeBuilder customBuilder) { if (customBuilder == null) { throw new ArgumentNullException("customBuilder"); } m_containingType.ThrowIfCreated(); customBuilder.CreateCustomAttribute(m_moduleBuilder, m_prToken.Token); } // Not supported functions in dynamic module. public override Object GetValue(Object obj,Object[] index) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override Object GetValue(Object obj,BindingFlags invokeAttr,Binder binder,Object[] index,CultureInfo culture) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override void SetValue(Object obj,Object value,Object[] index) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override void SetValue(Object obj,Object value,BindingFlags invokeAttr,Binder binder,Object[] index,CultureInfo culture) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override MethodInfo[] GetAccessors(bool nonPublic) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override MethodInfo GetGetMethod(bool nonPublic) { if (nonPublic || m_getMethod == null) return m_getMethod; // now check to see if m_getMethod is public if ((m_getMethod.Attributes & MethodAttributes.Public) == MethodAttributes.Public) return m_getMethod; return null; } public override MethodInfo GetSetMethod(bool nonPublic) { if (nonPublic || m_setMethod == null) return m_setMethod; // now check to see if m_setMethod is public if ((m_setMethod.Attributes & MethodAttributes.Public) == MethodAttributes.Public) return m_setMethod; return null; } public override ParameterInfo[] GetIndexParameters() { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override Type PropertyType { get { return m_returnType; } } public override PropertyAttributes Attributes { get { return m_attributes;} } public override bool CanRead { get { if (m_getMethod != null) return true; else return false; } } public override bool CanWrite { get { if (m_setMethod != null) return true; else return false; } } public override Object[] GetCustomAttributes(bool inherit) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override Object[] GetCustomAttributes(Type attributeType, bool inherit) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override bool IsDefined (Type attributeType, bool inherit) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } void _PropertyBuilder.GetTypeInfoCount(out uint pcTInfo) { throw new NotImplementedException(); } void _PropertyBuilder.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo) { throw new NotImplementedException(); } void _PropertyBuilder.GetIDsOfNames([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId) { throw new NotImplementedException(); } void _PropertyBuilder.Invoke(uint dispIdMember, [In] ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr) { throw new NotImplementedException(); } public override String Name { get { return m_name; } } public override Type DeclaringType { get { return m_containingType; } } public override Type ReflectedType { get { return m_containingType; } } // These are package private so that TypeBuilder can access them. private String m_name; // The name of the property private PropertyToken m_prToken; // The token of this property private int m_tkProperty; private ModuleBuilder m_moduleBuilder; private SignatureHelper m_signature; private PropertyAttributes m_attributes; // property's attribute flags private Type m_returnType; // property's return type private MethodInfo m_getMethod; private MethodInfo m_setMethod; private TypeBuilder m_containingType; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: PropertyBuilder ** **[....] ** ** ** Propertybuilder is for client to define properties for a class ** ** ===========================================================*/ namespace System.Reflection.Emit { using System; using System.Reflection; using CultureInfo = System.Globalization.CultureInfo; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Diagnostics.Contracts; // // A PropertyBuilder is always associated with a TypeBuilder. The TypeBuilder.DefineProperty // method will return a new PropertyBuilder to a client. // [HostProtection(MayLeakOnAbort = true)] [ClassInterface(ClassInterfaceType.None)] [ComDefaultInterface(typeof(_PropertyBuilder))] [System.Runtime.InteropServices.ComVisible(true)] public sealed class PropertyBuilder : PropertyInfo, _PropertyBuilder { // Make a private constructor so these cannot be constructed externally. private PropertyBuilder() {} // Constructs a PropertyBuilder. // internal PropertyBuilder( ModuleBuilder mod, // the module containing this PropertyBuilder String name, // property name SignatureHelper sig, // property signature descriptor info PropertyAttributes attr, // property attribute such as DefaultProperty, Bindable, DisplayBind, etc Type returnType, // return type of the property. PropertyToken prToken, // the metadata token for this property TypeBuilder containingType) // the containing type { if (name == null) throw new ArgumentNullException("name"); if (name.Length == 0) throw new ArgumentException(Environment.GetResourceString("Argument_EmptyName"), "name"); if (name[0] == '\0') throw new ArgumentException(Environment.GetResourceString("Argument_IllegalName"), "name"); Contract.EndContractBlock(); m_name = name; m_moduleBuilder = mod; m_signature = sig; m_attributes = attr; m_returnType = returnType; m_prToken = prToken; m_tkProperty = prToken.Token; m_containingType = containingType; } //************************************************ // Set the default value of the Property //************************************************ [System.Security.SecuritySafeCritical] // auto-generated public void SetConstant(Object defaultValue) { m_containingType.ThrowIfCreated(); TypeBuilder.SetConstantValue( m_moduleBuilder, m_prToken.Token, m_returnType, defaultValue); } // Return the Token for this property within the TypeBuilder that the // property is defined within. public PropertyToken PropertyToken { get {return m_prToken;} } internal int MetadataTokenInternal { get { return m_tkProperty; } } public override Module Module { get { return m_containingType.Module; } } [System.Security.SecurityCritical] // auto-generated private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttributes semantics) { if (mdBuilder == null) { throw new ArgumentNullException("mdBuilder"); } m_containingType.ThrowIfCreated(); TypeBuilder.DefineMethodSemantics( m_moduleBuilder.GetNativeHandle(), m_prToken.Token, semantics, mdBuilder.GetToken().Token); } [System.Security.SecuritySafeCritical] // auto-generated public void SetGetMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Getter); m_getMethod = mdBuilder; } [System.Security.SecuritySafeCritical] // auto-generated public void SetSetMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Setter); m_setMethod = mdBuilder; } [System.Security.SecuritySafeCritical] // auto-generated public void AddOtherMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Other); } // Use this function if client decides to form the custom attribute blob themselves [System.Security.SecuritySafeCritical] // auto-generated [System.Runtime.InteropServices.ComVisible(true)] public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { if (con == null) throw new ArgumentNullException("con"); if (binaryAttribute == null) throw new ArgumentNullException("binaryAttribute"); m_containingType.ThrowIfCreated(); TypeBuilder.DefineCustomAttribute( m_moduleBuilder, m_prToken.Token, m_moduleBuilder.GetConstructorToken(con).Token, binaryAttribute, false, false); } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder [System.Security.SecuritySafeCritical] // auto-generated public void SetCustomAttribute(CustomAttributeBuilder customBuilder) { if (customBuilder == null) { throw new ArgumentNullException("customBuilder"); } m_containingType.ThrowIfCreated(); customBuilder.CreateCustomAttribute(m_moduleBuilder, m_prToken.Token); } // Not supported functions in dynamic module. public override Object GetValue(Object obj,Object[] index) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override Object GetValue(Object obj,BindingFlags invokeAttr,Binder binder,Object[] index,CultureInfo culture) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override void SetValue(Object obj,Object value,Object[] index) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override void SetValue(Object obj,Object value,BindingFlags invokeAttr,Binder binder,Object[] index,CultureInfo culture) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override MethodInfo[] GetAccessors(bool nonPublic) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override MethodInfo GetGetMethod(bool nonPublic) { if (nonPublic || m_getMethod == null) return m_getMethod; // now check to see if m_getMethod is public if ((m_getMethod.Attributes & MethodAttributes.Public) == MethodAttributes.Public) return m_getMethod; return null; } public override MethodInfo GetSetMethod(bool nonPublic) { if (nonPublic || m_setMethod == null) return m_setMethod; // now check to see if m_setMethod is public if ((m_setMethod.Attributes & MethodAttributes.Public) == MethodAttributes.Public) return m_setMethod; return null; } public override ParameterInfo[] GetIndexParameters() { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override Type PropertyType { get { return m_returnType; } } public override PropertyAttributes Attributes { get { return m_attributes;} } public override bool CanRead { get { if (m_getMethod != null) return true; else return false; } } public override bool CanWrite { get { if (m_setMethod != null) return true; else return false; } } public override Object[] GetCustomAttributes(bool inherit) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override Object[] GetCustomAttributes(Type attributeType, bool inherit) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } public override bool IsDefined (Type attributeType, bool inherit) { throw new NotSupportedException(Environment.GetResourceString("NotSupported_DynamicModule")); } void _PropertyBuilder.GetTypeInfoCount(out uint pcTInfo) { throw new NotImplementedException(); } void _PropertyBuilder.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo) { throw new NotImplementedException(); } void _PropertyBuilder.GetIDsOfNames([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId) { throw new NotImplementedException(); } void _PropertyBuilder.Invoke(uint dispIdMember, [In] ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr) { throw new NotImplementedException(); } public override String Name { get { return m_name; } } public override Type DeclaringType { get { return m_containingType; } } public override Type ReflectedType { get { return m_containingType; } } // These are package private so that TypeBuilder can access them. private String m_name; // The name of the property private PropertyToken m_prToken; // The token of this property private int m_tkProperty; private ModuleBuilder m_moduleBuilder; private SignatureHelper m_signature; private PropertyAttributes m_attributes; // property's attribute flags private Type m_returnType; // property's return type private MethodInfo m_getMethod; private MethodInfo m_setMethod; private TypeBuilder m_containingType; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsTokenRoleProvider.cs
- HttpListenerPrefixCollection.cs
- HtmlTableCellCollection.cs
- future.cs
- SecurityMode.cs
- TextParagraphProperties.cs
- KnownIds.cs
- Debug.cs
- DSASignatureFormatter.cs
- AccessedThroughPropertyAttribute.cs
- SplashScreen.cs
- GridViewSortEventArgs.cs
- Bits.cs
- RadioButtonAutomationPeer.cs
- MailMessageEventArgs.cs
- SuppressMessageAttribute.cs
- StatusStrip.cs
- Errors.cs
- WindowsListViewScroll.cs
- CssClassPropertyAttribute.cs
- WrappedIUnknown.cs
- DataControlFieldCollection.cs
- DrawingGroup.cs
- SystemIPAddressInformation.cs
- TimeManager.cs
- DoubleAnimationUsingPath.cs
- ScrollProperties.cs
- PermissionSet.cs
- ProcessExitedException.cs
- TextElementEditingBehaviorAttribute.cs
- StaticSiteMapProvider.cs
- JapaneseLunisolarCalendar.cs
- XPathBinder.cs
- RootBrowserWindowAutomationPeer.cs
- OletxTransactionManager.cs
- DataGridViewTextBoxCell.cs
- Paragraph.cs
- DataGridViewEditingControlShowingEventArgs.cs
- KeyManager.cs
- SponsorHelper.cs
- FixedFindEngine.cs
- DataObjectMethodAttribute.cs
- XmlQualifiedNameTest.cs
- DateTimeFormat.cs
- DataGridRelationshipRow.cs
- DPTypeDescriptorContext.cs
- IdnElement.cs
- XmlText.cs
- Timer.cs
- ConnectionPoolManager.cs
- Ray3DHitTestResult.cs
- ToolboxCategory.cs
- MasterPageParser.cs
- ContractNamespaceAttribute.cs
- ReferencedAssemblyResolver.cs
- SiteMapDataSourceView.cs
- SoapIncludeAttribute.cs
- AudioLevelUpdatedEventArgs.cs
- IdnElement.cs
- PageSetupDialog.cs
- CollectionMarkupSerializer.cs
- TreeNodeClickEventArgs.cs
- PageSettings.cs
- CatalogUtil.cs
- MarshalDirectiveException.cs
- SqlConnectionPoolProviderInfo.cs
- LayoutExceptionEventArgs.cs
- XmlArrayItemAttribute.cs
- ByteBufferPool.cs
- BulletedList.cs
- AggregationMinMaxHelpers.cs
- Table.cs
- ListViewGroupConverter.cs
- EventHandlerList.cs
- CommonXSendMessage.cs
- EmptyElement.cs
- XmlSchemaValidator.cs
- UIElementParagraph.cs
- ProfilePropertyMetadata.cs
- CompilerScopeManager.cs
- WebReferencesBuildProvider.cs
- ValidatingPropertiesEventArgs.cs
- ButtonBaseAdapter.cs
- DispatcherHooks.cs
- DataBoundLiteralControl.cs
- RegexFCD.cs
- EncodingInfo.cs
- XmlFormatExtensionAttribute.cs
- CacheChildrenQuery.cs
- ToolStripDesignerAvailabilityAttribute.cs
- CacheAxisQuery.cs
- FixedSOMGroup.cs
- _AuthenticationState.cs
- AsnEncodedData.cs
- Stack.cs
- IdentityNotMappedException.cs
- CellTreeNodeVisitors.cs
- DataReceivedEventArgs.cs
- mediaclock.cs
- EntityTypeBase.cs