Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CellCreator.cs / 2 / CellCreator.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Data.Mapping.ViewGeneration.Structures; using System.Collections.Generic; using System.Data.Mapping.ViewGeneration.Utils; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Mapping.ViewGeneration { // A class that handles creation of cells from the meta data information internal class CellCreator : InternalBase { #region Constructors // effects: Creates a cell creator object for an entity container's // mappings (specified in "maps") internal CellCreator(StorageEntityContainerMapping containerMapping, MetadataWorkspace workspace) { m_containerMapping = containerMapping; m_identifiers = new CqlIdentifiers(); m_workspace = workspace; } #endregion #region Fields // The mappings from the metadata for different containers private StorageEntityContainerMapping m_containerMapping; private int m_currentCellNumber; private MetadataWorkspace m_workspace; private CqlIdentifiers m_identifiers; // Keep track of all the identifiers to prevent clashes with _from0, // _from1, T, T1, etc // Keep track of names of // * Entity Containers // * Extent names // * Entity Types // * Complex Types // * Properties // * Roles #endregion #region Properties // effects: Returns the set of identifiers used in this internal CqlIdentifiers Identifiers { get { return m_identifiers;} } #endregion #region External methods // effects: Generates the cells for all the entity containers // specified in this. The generated cells are geared for query view generation internal ListGenerateCells(ConfigViewGenerator config) { List | cells = new List | (); if (config.IsNormalTracing) { m_containerMapping.Print(0); } // Get the cells from the entity container metadata ExtractCellsForContainer(m_containerMapping, cells, m_workspace); // Get the identifiers from the cells m_identifiers.AddIdentifier(m_containerMapping.EdmEntityContainer.Name); m_identifiers.AddIdentifier(m_containerMapping.StorageEntityContainer.Name); foreach (Cell cell in cells) { cell.GetIdentifiers(m_identifiers); } return cells; } #endregion #region Private Methods // effects: Given the metadata information for a container in // containerMap, generate the cells for it and modify cells to // contain the newly-generated cells private void ExtractCellsForContainer(StorageEntityContainerMapping containerMap, List | cells, MetadataWorkspace workspace) { // extract entity mappings, i.e., for CPerson1, COrder1, etc foreach (StorageSetMapping extentMap in containerMap.AllSetMaps) { // Get each type map in an entity set mapping, i.e., for // CPerson, CCustomer, etc in CPerson1 foreach (StorageTypeMapping typeMap in extentMap.TypeMappings) { StorageEntityTypeMapping entityTypeMap = typeMap as StorageEntityTypeMapping; Debug.Assert(entityTypeMap!=null || typeMap is StorageAssociationTypeMapping, "Invalid typemap"); // A set for all the types in this type mapping Set | allTypes = new Set (); if (entityTypeMap != null) { // Gather a set of all explicit types for an entity // type mapping in allTypes. Note that we do not have // subtyping in composition sets and association sets allTypes.AddRange(entityTypeMap.Types); foreach (EdmType type in entityTypeMap.IsOfTypes) { IEnumerable typeAndSubTypes = MetadataHelper.GetTypeAndSubtypesOf(type, m_workspace, false /*includeAbstractTypes*/); allTypes.AddRange(typeAndSubTypes); } } EntitySetBase extent = extentMap.Set; Debug.Assert(extent != null, "Extent map for a null extent or type of extentMap.Exent " + "is not Extent"); // For each table mapping for the type mapping, we create cells foreach (StorageMappingFragment fragmentMap in typeMap.MappingFragments) { ExtractCellsFromTableFragment(extent, fragmentMap, allTypes, cells); } } } } // effects: Given an extent's ("extent") table fragment that is // contained inside typeMap, determine the cells that need to be // created and add them to cells // allTypes corresponds to all the different types that the type map // represents -- this parameter has something useful only if extent // is an entity set private void ExtractCellsFromTableFragment(EntitySetBase extent, StorageMappingFragment fragmentMap, Set allTypes, List cells) { // create C-query components ExtentJoinTreeNode cRootExtentNode = null; // For Composition, the root node of the Join Tree // node has to be the Extent node of the Parent end in the composition //set instead of the Composition extent itself. cRootExtentNode = new ExtentJoinTreeNode(extent, new MemberJoinTreeNode[] { }, m_workspace); BoolExpression cQueryWhereClause = BoolExpression.True; List | cSlots = new List (); if (allTypes.Count > 0) { // Create a type condition for the extent, i.e., "extent in allTypes" cQueryWhereClause = BoolExpression.CreateLiteral(new OneOfTypeConst(cRootExtentNode, allTypes), null); } // create S-query components ExtentJoinTreeNode sRootExtentNode = new ExtentJoinTreeNode(fragmentMap.TableSet, new MemberJoinTreeNode[] { }, m_workspace); BoolExpression sQueryWhereClause = BoolExpression.True; List sSlots = new List (); // Association or entity set // Add the properties and the key properties to a list and // then process them in ExtractProperties ExtractProperties(fragmentMap.AllProperties, cRootExtentNode, cSlots, ref cQueryWhereClause, sRootExtentNode, sSlots, ref sQueryWhereClause); // limitation of MSL API: cannot assign constant values to table columns CellQuery cQuery = new CellQuery(cSlots, cQueryWhereClause, cRootExtentNode); CellQuery sQuery = new CellQuery(sSlots, sQueryWhereClause, sRootExtentNode); StorageMappingFragment fragmentInfo = fragmentMap as StorageMappingFragment; Debug.Assert((fragmentInfo != null), "CSMappingFragment should support Line Info"); CellLabel label = new CellLabel(fragmentInfo); Cell cell = Cell.CreateCS(cQuery, sQuery, label, m_currentCellNumber); m_currentCellNumber++; cells.Add(cell); } // requires: "properties" corresponds to all the properties that are // inside cNode.Value, e.g., cNode corresponds to an extent Person, // properties contains all the properties inside Person (recursively) // effects: Given C-side and S-side Cell Query for a cell, generates // the projected slots on both sides corresponding to // properties. Also updates the C-side whereclause corresponding to // discriminator properties on the C-side, e.g, isHighPriority private void ExtractProperties(IEnumerable properties, JoinTreeNode cNode, List cSlots, ref BoolExpression cQueryWhereClause, JoinTreeNode sRootExtentNode, List sSlots, ref BoolExpression sQueryWhereClause) { // For each property mapping, we add an entry to the C and S cell queries foreach (StoragePropertyMapping propMap in properties) { StorageScalarPropertyMapping scalarPropMap = propMap as StorageScalarPropertyMapping; StorageComplexPropertyMapping complexPropMap = propMap as StorageComplexPropertyMapping; StorageEndPropertyMapping associationEndPropertypMap = propMap as StorageEndPropertyMapping; StorageConditionPropertyMapping conditionMap = propMap as StorageConditionPropertyMapping; Debug.Assert(scalarPropMap!=null || complexPropMap!=null || associationEndPropertypMap!=null || conditionMap!=null, "Unimplemented property mapping"); if (scalarPropMap != null) { Debug.Assert(scalarPropMap.ColumnProperty != null, "ColumnMember for a Scalar Property can not be null"); // Add an attribute node to node JoinTreeNode cAttributeNode = cNode.CreateAttributeNode(scalarPropMap.EdmProperty); // Add a column (attribute) node the sQuery // unlike the C side, there is no nesting. Hence we // did not need an internal node JoinTreeNode sAttributeNode = sRootExtentNode.CreateAttributeNode(scalarPropMap.ColumnProperty); cSlots.Add(new JoinTreeSlot(cAttributeNode)); sSlots.Add(new JoinTreeSlot(sAttributeNode)); } // Note: S-side constants are not allowed since they can cause // problems -- for example, if such a cell says 5 for the // third field, we cannot guarantee the fact that an // application may not set that field to 7 in the C-space // Check if the property mapping is for an complex types if (complexPropMap != null) { foreach (StorageComplexTypeMapping complexTypeMap in complexPropMap.TypeMappings) { // Create a node for the complex type property and call recursively JoinTreeNode complexMemberNode = cNode.CreateAttributeNode(complexPropMap.EdmProperty); //Get the list of types that this type map represents Set allTypes = new Set (); // Gather a set of all explicit types for an entity // type mapping in allTypes. IEnumerable exactTypes = Helpers.AsSuperTypeList (complexTypeMap.Types); allTypes.AddRange(exactTypes); foreach (EdmType type in complexTypeMap.IsOfTypes) { allTypes.AddRange(MetadataHelper.GetTypeAndSubtypesOf(type, m_workspace, false /*includeAbstractTypes*/)); } BoolExpression complexInTypes = BoolExpression.CreateLiteral(new OneOfTypeConst(complexMemberNode, allTypes), null); cQueryWhereClause = BoolExpression.CreateAnd(cQueryWhereClause, complexInTypes); // Now extract the properties of the complex type // (which could have other complex types) ExtractProperties(complexTypeMap.AllProperties, complexMemberNode, cSlots, ref cQueryWhereClause, sRootExtentNode, sSlots, ref sQueryWhereClause); } } // Check if the property mapping is for an associaion if (associationEndPropertypMap != null) { // create join tree node representing this relation end JoinTreeNode associationEndNode = cNode.CreateAttributeNode(associationEndPropertypMap.EndMember); // call recursively ExtractProperties(associationEndPropertypMap.Properties, associationEndNode, cSlots, ref cQueryWhereClause, sRootExtentNode, sSlots, ref sQueryWhereClause); } //Check if the this is a condition and add it to the Where clause if (conditionMap != null) { if (conditionMap.ColumnProperty != null) { //Produce a Condition Expression for the Condition Map. BoolExpression conditionExpression = GetConditionExpression(sRootExtentNode, conditionMap); //Add the condition expression to the exisiting S side Where clause using an "And" sQueryWhereClause = BoolExpression.CreateAnd(sQueryWhereClause, conditionExpression); } else { Debug.Assert(conditionMap.EdmProperty != null); //Produce a Condition Expression for the Condition Map. BoolExpression conditionExpression = GetConditionExpression(cNode, conditionMap); //Add the condition expression to the exisiting C side Where clause using an "And" cQueryWhereClause = BoolExpression.CreateAnd(cQueryWhereClause, conditionExpression); } } } } /// /// Takes in a JoinTreeNode and a Contition Property Map and creates an BoolExpression /// for the Condition Map. /// /// /// ///private static BoolExpression GetConditionExpression(JoinTreeNode joinTreeNode, StorageConditionPropertyMapping conditionMap) { //Get the member for which the condition is being specified EdmMember conditionMember = (conditionMap.ColumnProperty != null) ? conditionMap.ColumnProperty : conditionMap.EdmProperty; JoinTreeNode conditionMemberNode = joinTreeNode.CreateAttributeNode(conditionMember); //Check if this is a IsNull condition OneOfConst conditionExpression = null; if (conditionMap.IsNull.HasValue) { // for conditions on scalars, create NodeValue nodes, otherwise NodeType CellConstant conditionConstant = (true == conditionMap.IsNull.Value) ? CellConstant.Null : CellConstant.NotNull; if (true == MetadataHelper.IsNonRefSimpleMember(conditionMember)) { conditionExpression = new OneOfScalarConst(conditionMemberNode, conditionConstant); } else { conditionExpression = new OneOfTypeConst(conditionMemberNode, conditionConstant); } } else { TypeUsage conditionMemberTypeUsage = (conditionMap.ColumnProperty != null) ? conditionMap.ColumnProperty.TypeUsage : conditionMap.EdmProperty.TypeUsage; conditionExpression = new OneOfScalarConst(conditionMemberNode, conditionMap.Value, conditionMemberTypeUsage); } Debug.Assert(conditionExpression != null); return BoolExpression.CreateLiteral(conditionExpression, null); } #endregion #region String methods internal override void ToCompactString(System.Text.StringBuilder builder) { builder.Append("CellCreator"); // No state to really show i.e., m_maps } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Data.Mapping.ViewGeneration.Structures; using System.Collections.Generic; using System.Data.Mapping.ViewGeneration.Utils; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Mapping.ViewGeneration { // A class that handles creation of cells from the meta data information internal class CellCreator : InternalBase { #region Constructors // effects: Creates a cell creator object for an entity container's // mappings (specified in "maps") internal CellCreator(StorageEntityContainerMapping containerMapping, MetadataWorkspace workspace) { m_containerMapping = containerMapping; m_identifiers = new CqlIdentifiers(); m_workspace = workspace; } #endregion #region Fields // The mappings from the metadata for different containers private StorageEntityContainerMapping m_containerMapping; private int m_currentCellNumber; private MetadataWorkspace m_workspace; private CqlIdentifiers m_identifiers; // Keep track of all the identifiers to prevent clashes with _from0, // _from1, T, T1, etc // Keep track of names of // * Entity Containers // * Extent names // * Entity Types // * Complex Types // * Properties // * Roles #endregion #region Properties // effects: Returns the set of identifiers used in this internal CqlIdentifiers Identifiers { get { return m_identifiers;} } #endregion #region External methods // effects: Generates the cells for all the entity containers // specified in this. The generated cells are geared for query view generation internal ListGenerateCells(ConfigViewGenerator config) { List | cells = new List | (); if (config.IsNormalTracing) { m_containerMapping.Print(0); } // Get the cells from the entity container metadata ExtractCellsForContainer(m_containerMapping, cells, m_workspace); // Get the identifiers from the cells m_identifiers.AddIdentifier(m_containerMapping.EdmEntityContainer.Name); m_identifiers.AddIdentifier(m_containerMapping.StorageEntityContainer.Name); foreach (Cell cell in cells) { cell.GetIdentifiers(m_identifiers); } return cells; } #endregion #region Private Methods // effects: Given the metadata information for a container in // containerMap, generate the cells for it and modify cells to // contain the newly-generated cells private void ExtractCellsForContainer(StorageEntityContainerMapping containerMap, List | cells, MetadataWorkspace workspace) { // extract entity mappings, i.e., for CPerson1, COrder1, etc foreach (StorageSetMapping extentMap in containerMap.AllSetMaps) { // Get each type map in an entity set mapping, i.e., for // CPerson, CCustomer, etc in CPerson1 foreach (StorageTypeMapping typeMap in extentMap.TypeMappings) { StorageEntityTypeMapping entityTypeMap = typeMap as StorageEntityTypeMapping; Debug.Assert(entityTypeMap!=null || typeMap is StorageAssociationTypeMapping, "Invalid typemap"); // A set for all the types in this type mapping Set | allTypes = new Set (); if (entityTypeMap != null) { // Gather a set of all explicit types for an entity // type mapping in allTypes. Note that we do not have // subtyping in composition sets and association sets allTypes.AddRange(entityTypeMap.Types); foreach (EdmType type in entityTypeMap.IsOfTypes) { IEnumerable typeAndSubTypes = MetadataHelper.GetTypeAndSubtypesOf(type, m_workspace, false /*includeAbstractTypes*/); allTypes.AddRange(typeAndSubTypes); } } EntitySetBase extent = extentMap.Set; Debug.Assert(extent != null, "Extent map for a null extent or type of extentMap.Exent " + "is not Extent"); // For each table mapping for the type mapping, we create cells foreach (StorageMappingFragment fragmentMap in typeMap.MappingFragments) { ExtractCellsFromTableFragment(extent, fragmentMap, allTypes, cells); } } } } // effects: Given an extent's ("extent") table fragment that is // contained inside typeMap, determine the cells that need to be // created and add them to cells // allTypes corresponds to all the different types that the type map // represents -- this parameter has something useful only if extent // is an entity set private void ExtractCellsFromTableFragment(EntitySetBase extent, StorageMappingFragment fragmentMap, Set allTypes, List cells) { // create C-query components ExtentJoinTreeNode cRootExtentNode = null; // For Composition, the root node of the Join Tree // node has to be the Extent node of the Parent end in the composition //set instead of the Composition extent itself. cRootExtentNode = new ExtentJoinTreeNode(extent, new MemberJoinTreeNode[] { }, m_workspace); BoolExpression cQueryWhereClause = BoolExpression.True; List | cSlots = new List (); if (allTypes.Count > 0) { // Create a type condition for the extent, i.e., "extent in allTypes" cQueryWhereClause = BoolExpression.CreateLiteral(new OneOfTypeConst(cRootExtentNode, allTypes), null); } // create S-query components ExtentJoinTreeNode sRootExtentNode = new ExtentJoinTreeNode(fragmentMap.TableSet, new MemberJoinTreeNode[] { }, m_workspace); BoolExpression sQueryWhereClause = BoolExpression.True; List sSlots = new List (); // Association or entity set // Add the properties and the key properties to a list and // then process them in ExtractProperties ExtractProperties(fragmentMap.AllProperties, cRootExtentNode, cSlots, ref cQueryWhereClause, sRootExtentNode, sSlots, ref sQueryWhereClause); // limitation of MSL API: cannot assign constant values to table columns CellQuery cQuery = new CellQuery(cSlots, cQueryWhereClause, cRootExtentNode); CellQuery sQuery = new CellQuery(sSlots, sQueryWhereClause, sRootExtentNode); StorageMappingFragment fragmentInfo = fragmentMap as StorageMappingFragment; Debug.Assert((fragmentInfo != null), "CSMappingFragment should support Line Info"); CellLabel label = new CellLabel(fragmentInfo); Cell cell = Cell.CreateCS(cQuery, sQuery, label, m_currentCellNumber); m_currentCellNumber++; cells.Add(cell); } // requires: "properties" corresponds to all the properties that are // inside cNode.Value, e.g., cNode corresponds to an extent Person, // properties contains all the properties inside Person (recursively) // effects: Given C-side and S-side Cell Query for a cell, generates // the projected slots on both sides corresponding to // properties. Also updates the C-side whereclause corresponding to // discriminator properties on the C-side, e.g, isHighPriority private void ExtractProperties(IEnumerable properties, JoinTreeNode cNode, List cSlots, ref BoolExpression cQueryWhereClause, JoinTreeNode sRootExtentNode, List sSlots, ref BoolExpression sQueryWhereClause) { // For each property mapping, we add an entry to the C and S cell queries foreach (StoragePropertyMapping propMap in properties) { StorageScalarPropertyMapping scalarPropMap = propMap as StorageScalarPropertyMapping; StorageComplexPropertyMapping complexPropMap = propMap as StorageComplexPropertyMapping; StorageEndPropertyMapping associationEndPropertypMap = propMap as StorageEndPropertyMapping; StorageConditionPropertyMapping conditionMap = propMap as StorageConditionPropertyMapping; Debug.Assert(scalarPropMap!=null || complexPropMap!=null || associationEndPropertypMap!=null || conditionMap!=null, "Unimplemented property mapping"); if (scalarPropMap != null) { Debug.Assert(scalarPropMap.ColumnProperty != null, "ColumnMember for a Scalar Property can not be null"); // Add an attribute node to node JoinTreeNode cAttributeNode = cNode.CreateAttributeNode(scalarPropMap.EdmProperty); // Add a column (attribute) node the sQuery // unlike the C side, there is no nesting. Hence we // did not need an internal node JoinTreeNode sAttributeNode = sRootExtentNode.CreateAttributeNode(scalarPropMap.ColumnProperty); cSlots.Add(new JoinTreeSlot(cAttributeNode)); sSlots.Add(new JoinTreeSlot(sAttributeNode)); } // Note: S-side constants are not allowed since they can cause // problems -- for example, if such a cell says 5 for the // third field, we cannot guarantee the fact that an // application may not set that field to 7 in the C-space // Check if the property mapping is for an complex types if (complexPropMap != null) { foreach (StorageComplexTypeMapping complexTypeMap in complexPropMap.TypeMappings) { // Create a node for the complex type property and call recursively JoinTreeNode complexMemberNode = cNode.CreateAttributeNode(complexPropMap.EdmProperty); //Get the list of types that this type map represents Set allTypes = new Set (); // Gather a set of all explicit types for an entity // type mapping in allTypes. IEnumerable exactTypes = Helpers.AsSuperTypeList (complexTypeMap.Types); allTypes.AddRange(exactTypes); foreach (EdmType type in complexTypeMap.IsOfTypes) { allTypes.AddRange(MetadataHelper.GetTypeAndSubtypesOf(type, m_workspace, false /*includeAbstractTypes*/)); } BoolExpression complexInTypes = BoolExpression.CreateLiteral(new OneOfTypeConst(complexMemberNode, allTypes), null); cQueryWhereClause = BoolExpression.CreateAnd(cQueryWhereClause, complexInTypes); // Now extract the properties of the complex type // (which could have other complex types) ExtractProperties(complexTypeMap.AllProperties, complexMemberNode, cSlots, ref cQueryWhereClause, sRootExtentNode, sSlots, ref sQueryWhereClause); } } // Check if the property mapping is for an associaion if (associationEndPropertypMap != null) { // create join tree node representing this relation end JoinTreeNode associationEndNode = cNode.CreateAttributeNode(associationEndPropertypMap.EndMember); // call recursively ExtractProperties(associationEndPropertypMap.Properties, associationEndNode, cSlots, ref cQueryWhereClause, sRootExtentNode, sSlots, ref sQueryWhereClause); } //Check if the this is a condition and add it to the Where clause if (conditionMap != null) { if (conditionMap.ColumnProperty != null) { //Produce a Condition Expression for the Condition Map. BoolExpression conditionExpression = GetConditionExpression(sRootExtentNode, conditionMap); //Add the condition expression to the exisiting S side Where clause using an "And" sQueryWhereClause = BoolExpression.CreateAnd(sQueryWhereClause, conditionExpression); } else { Debug.Assert(conditionMap.EdmProperty != null); //Produce a Condition Expression for the Condition Map. BoolExpression conditionExpression = GetConditionExpression(cNode, conditionMap); //Add the condition expression to the exisiting C side Where clause using an "And" cQueryWhereClause = BoolExpression.CreateAnd(cQueryWhereClause, conditionExpression); } } } } /// /// Takes in a JoinTreeNode and a Contition Property Map and creates an BoolExpression /// for the Condition Map. /// /// /// ///private static BoolExpression GetConditionExpression(JoinTreeNode joinTreeNode, StorageConditionPropertyMapping conditionMap) { //Get the member for which the condition is being specified EdmMember conditionMember = (conditionMap.ColumnProperty != null) ? conditionMap.ColumnProperty : conditionMap.EdmProperty; JoinTreeNode conditionMemberNode = joinTreeNode.CreateAttributeNode(conditionMember); //Check if this is a IsNull condition OneOfConst conditionExpression = null; if (conditionMap.IsNull.HasValue) { // for conditions on scalars, create NodeValue nodes, otherwise NodeType CellConstant conditionConstant = (true == conditionMap.IsNull.Value) ? CellConstant.Null : CellConstant.NotNull; if (true == MetadataHelper.IsNonRefSimpleMember(conditionMember)) { conditionExpression = new OneOfScalarConst(conditionMemberNode, conditionConstant); } else { conditionExpression = new OneOfTypeConst(conditionMemberNode, conditionConstant); } } else { TypeUsage conditionMemberTypeUsage = (conditionMap.ColumnProperty != null) ? conditionMap.ColumnProperty.TypeUsage : conditionMap.EdmProperty.TypeUsage; conditionExpression = new OneOfScalarConst(conditionMemberNode, conditionMap.Value, conditionMemberTypeUsage); } Debug.Assert(conditionExpression != null); return BoolExpression.CreateLiteral(conditionExpression, null); } #endregion #region String methods internal override void ToCompactString(System.Text.StringBuilder builder) { builder.Append("CellCreator"); // No state to really show i.e., m_maps } #endregion } } // 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
- TextRangeBase.cs
- GC.cs
- MatrixStack.cs
- WebZone.cs
- Rect3D.cs
- QueuePropertyVariants.cs
- FrameSecurityDescriptor.cs
- ObfuscateAssemblyAttribute.cs
- ValidationRuleCollection.cs
- NullableDoubleMinMaxAggregationOperator.cs
- DetailsViewRowCollection.cs
- AssemblySettingAttributes.cs
- XmlBinaryWriter.cs
- URLBuilder.cs
- UpdatePanelControlTrigger.cs
- KerberosSecurityTokenAuthenticator.cs
- XmlSchemaAnnotation.cs
- ExtensionElementCollection.cs
- _BufferOffsetSize.cs
- MenuItemBindingCollection.cs
- RequestCacheManager.cs
- ListItemConverter.cs
- Expander.cs
- ConfigXmlElement.cs
- LocalizedNameDescriptionPair.cs
- UIPropertyMetadata.cs
- SingleKeyFrameCollection.cs
- BitSet.cs
- RepeatButton.cs
- DeferredReference.cs
- String.cs
- MembershipAdapter.cs
- SqlTopReducer.cs
- SchemaTableColumn.cs
- DtdParser.cs
- HybridDictionary.cs
- ProxyElement.cs
- WeakReference.cs
- ListViewContainer.cs
- Aggregates.cs
- InstalledVoice.cs
- Timer.cs
- SemanticResolver.cs
- ISAPIWorkerRequest.cs
- WebPartExportVerb.cs
- AmbiguousMatchException.cs
- safex509handles.cs
- Logging.cs
- MediaTimeline.cs
- ListItemsPage.cs
- UrlAuthFailedErrorFormatter.cs
- Automation.cs
- ClientOperationFormatterProvider.cs
- Attachment.cs
- OutputCacheSettingsSection.cs
- WeakReferenceEnumerator.cs
- WindowsFormsHost.cs
- Config.cs
- DetailsView.cs
- RNGCryptoServiceProvider.cs
- WebPartCatalogAddVerb.cs
- _SslState.cs
- DeploymentSectionCache.cs
- PolicyImporterElement.cs
- Stylesheet.cs
- InternalPolicyElement.cs
- DiscoveryServerProtocol.cs
- OciLobLocator.cs
- Model3DCollection.cs
- XmlUrlResolver.cs
- ObjectDataSourceMethodEventArgs.cs
- LocalizableResourceBuilder.cs
- BoolExpression.cs
- DetailsViewInsertedEventArgs.cs
- CircleHotSpot.cs
- FontUnit.cs
- AsymmetricSignatureDeformatter.cs
- QueryContinueDragEventArgs.cs
- RedBlackList.cs
- SwitchLevelAttribute.cs
- CellParagraph.cs
- BinaryNode.cs
- ThemeDirectoryCompiler.cs
- ReturnValue.cs
- XmlSchemaObject.cs
- ListInitExpression.cs
- CoTaskMemHandle.cs
- FontStyles.cs
- TypeConverterAttribute.cs
- BooleanSwitch.cs
- TransportChannelFactory.cs
- GiveFeedbackEventArgs.cs
- DesignerActionMethodItem.cs
- PersistenceTypeAttribute.cs
- ToolStripManager.cs
- InstanceCompleteException.cs
- ConfigurationElementProperty.cs
- SchemaImporterExtensionElement.cs
- RemotingConfiguration.cs
- DetailsViewRowCollection.cs