Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Description / MimeTextImporter.cs / 1305376 / MimeTextImporter.cs
namespace System.Web.Services.Description { using System.Web.Services; using System.Web.Services.Protocols; using System.Collections; using System; using System.Reflection; using System.CodeDom; using System.CodeDom.Compiler; using System.Xml.Serialization; internal class MimeTextReturn : MimeReturn { MimeTextBinding textBinding; internal MimeTextBinding TextBinding { get { return textBinding; } set { textBinding = value; } } } internal class MimeTextImporter : MimeImporter { string methodName; internal override MimeParameterCollection ImportParameters() { return null; } internal override MimeReturn ImportReturn() { MimeTextBinding mimeTextBinding = (MimeTextBinding)ImportContext.OperationBinding.Output.Extensions.Find(typeof(MimeTextBinding)); if (mimeTextBinding == null) return null; if (mimeTextBinding.Matches.Count == 0) { ImportContext.UnsupportedOperationBindingWarning(Res.GetString(Res.MissingMatchElement0)); return null; } methodName = CodeIdentifier.MakeValid(ImportContext.OperationBinding.Name); MimeTextReturn importedReturn = new MimeTextReturn(); importedReturn.TypeName = ImportContext.ClassNames.AddUnique(methodName + "Matches", mimeTextBinding); importedReturn.TextBinding = mimeTextBinding; importedReturn.ReaderType = typeof(TextReturnReader); return importedReturn; } internal override void GenerateCode(MimeReturn[] importedReturns, MimeParameterCollection[] importedParameters) { for (int i = 0; i < importedReturns.Length; i++) { if (importedReturns[i] is MimeTextReturn) { GenerateCode((MimeTextReturn)importedReturns[i], ImportContext.ServiceImporter.CodeGenerationOptions); } } } void GenerateCode(MimeTextReturn importedReturn, CodeGenerationOptions options) { GenerateCode(importedReturn.TypeName, importedReturn.TextBinding.Matches, options); } void GenerateCode(string typeName, MimeTextMatchCollection matches, CodeGenerationOptions options) { CodeIdentifiers members = new CodeIdentifiers(); CodeTypeDeclaration codeClass = WebCodeGenerator.AddClass(ImportContext.CodeNamespace, typeName, string.Empty, new string[0], null, CodeFlags.IsPublic, ImportContext.ServiceImporter.CodeGenerator.Supports(GeneratorSupport.PartialTypes)); string[] fieldTypeNames = new string[matches.Count]; for (int i = 0; i < matches.Count; i++) { MimeTextMatch match = matches[i]; string name = members.AddUnique(CodeIdentifier.MakeValid(match.Name.Length == 0 ? methodName + "Match" : match.Name), match); CodeAttributeDeclarationCollection metadata = new CodeAttributeDeclarationCollection(); if (match.Pattern.Length == 0) throw new ArgumentException(Res.GetString(Res.WebTextMatchMissingPattern)); CodeExpression pattern = new CodePrimitiveExpression(match.Pattern); int numPropValues = 0; if (match.Group != 1) numPropValues++; if (match.Capture != 0) numPropValues++; if (match.IgnoreCase) numPropValues++; if (match.Repeats != 1 && match.Repeats != int.MaxValue) numPropValues++; CodeExpression[] propertyValues = new CodeExpression[numPropValues]; string[] propertyNames = new string[propertyValues.Length]; numPropValues = 0; if (match.Group != 1) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.Group); propertyNames[numPropValues] = "Group"; numPropValues++; } if (match.Capture != 0) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.Capture); propertyNames[numPropValues] = "Capture"; numPropValues++; } if (match.IgnoreCase) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.IgnoreCase); propertyNames[numPropValues] = "IgnoreCase"; numPropValues++; } if (match.Repeats != 1 && match.Repeats != int.MaxValue) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.Repeats); propertyNames[numPropValues] = "MaxRepeats"; numPropValues++; } WebCodeGenerator.AddCustomAttribute(metadata, typeof(MatchAttribute), new CodeExpression[] { pattern }, propertyNames, propertyValues); string fieldTypeName; if (match.Matches.Count > 0) { fieldTypeName = ImportContext.ClassNames.AddUnique(CodeIdentifier.MakeValid(match.Type.Length == 0 ? name : match.Type), match); fieldTypeNames[i] = fieldTypeName; } else { fieldTypeName = typeof(string).FullName; } if (match.Repeats != 1) fieldTypeName += "[]"; CodeTypeMember member = WebCodeGenerator.AddMember(codeClass, fieldTypeName, name, null, metadata, CodeFlags.IsPublic, options); if (match.Matches.Count == 0 && match.Type.Length > 0) { ImportContext.Warnings |= ServiceDescriptionImportWarnings.OptionalExtensionsIgnored; ProtocolImporter.AddWarningComment(member.Comments, Res.GetString(Res.WebTextMatchIgnoredTypeWarning)); } } for (int i = 0; i < fieldTypeNames.Length; i++) { string fieldTypeName = fieldTypeNames[i]; if (fieldTypeName != null) { GenerateCode(fieldTypeName, matches[i].Matches, options); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Web.Services.Description { using System.Web.Services; using System.Web.Services.Protocols; using System.Collections; using System; using System.Reflection; using System.CodeDom; using System.CodeDom.Compiler; using System.Xml.Serialization; internal class MimeTextReturn : MimeReturn { MimeTextBinding textBinding; internal MimeTextBinding TextBinding { get { return textBinding; } set { textBinding = value; } } } internal class MimeTextImporter : MimeImporter { string methodName; internal override MimeParameterCollection ImportParameters() { return null; } internal override MimeReturn ImportReturn() { MimeTextBinding mimeTextBinding = (MimeTextBinding)ImportContext.OperationBinding.Output.Extensions.Find(typeof(MimeTextBinding)); if (mimeTextBinding == null) return null; if (mimeTextBinding.Matches.Count == 0) { ImportContext.UnsupportedOperationBindingWarning(Res.GetString(Res.MissingMatchElement0)); return null; } methodName = CodeIdentifier.MakeValid(ImportContext.OperationBinding.Name); MimeTextReturn importedReturn = new MimeTextReturn(); importedReturn.TypeName = ImportContext.ClassNames.AddUnique(methodName + "Matches", mimeTextBinding); importedReturn.TextBinding = mimeTextBinding; importedReturn.ReaderType = typeof(TextReturnReader); return importedReturn; } internal override void GenerateCode(MimeReturn[] importedReturns, MimeParameterCollection[] importedParameters) { for (int i = 0; i < importedReturns.Length; i++) { if (importedReturns[i] is MimeTextReturn) { GenerateCode((MimeTextReturn)importedReturns[i], ImportContext.ServiceImporter.CodeGenerationOptions); } } } void GenerateCode(MimeTextReturn importedReturn, CodeGenerationOptions options) { GenerateCode(importedReturn.TypeName, importedReturn.TextBinding.Matches, options); } void GenerateCode(string typeName, MimeTextMatchCollection matches, CodeGenerationOptions options) { CodeIdentifiers members = new CodeIdentifiers(); CodeTypeDeclaration codeClass = WebCodeGenerator.AddClass(ImportContext.CodeNamespace, typeName, string.Empty, new string[0], null, CodeFlags.IsPublic, ImportContext.ServiceImporter.CodeGenerator.Supports(GeneratorSupport.PartialTypes)); string[] fieldTypeNames = new string[matches.Count]; for (int i = 0; i < matches.Count; i++) { MimeTextMatch match = matches[i]; string name = members.AddUnique(CodeIdentifier.MakeValid(match.Name.Length == 0 ? methodName + "Match" : match.Name), match); CodeAttributeDeclarationCollection metadata = new CodeAttributeDeclarationCollection(); if (match.Pattern.Length == 0) throw new ArgumentException(Res.GetString(Res.WebTextMatchMissingPattern)); CodeExpression pattern = new CodePrimitiveExpression(match.Pattern); int numPropValues = 0; if (match.Group != 1) numPropValues++; if (match.Capture != 0) numPropValues++; if (match.IgnoreCase) numPropValues++; if (match.Repeats != 1 && match.Repeats != int.MaxValue) numPropValues++; CodeExpression[] propertyValues = new CodeExpression[numPropValues]; string[] propertyNames = new string[propertyValues.Length]; numPropValues = 0; if (match.Group != 1) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.Group); propertyNames[numPropValues] = "Group"; numPropValues++; } if (match.Capture != 0) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.Capture); propertyNames[numPropValues] = "Capture"; numPropValues++; } if (match.IgnoreCase) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.IgnoreCase); propertyNames[numPropValues] = "IgnoreCase"; numPropValues++; } if (match.Repeats != 1 && match.Repeats != int.MaxValue) { propertyValues[numPropValues] = new CodePrimitiveExpression(match.Repeats); propertyNames[numPropValues] = "MaxRepeats"; numPropValues++; } WebCodeGenerator.AddCustomAttribute(metadata, typeof(MatchAttribute), new CodeExpression[] { pattern }, propertyNames, propertyValues); string fieldTypeName; if (match.Matches.Count > 0) { fieldTypeName = ImportContext.ClassNames.AddUnique(CodeIdentifier.MakeValid(match.Type.Length == 0 ? name : match.Type), match); fieldTypeNames[i] = fieldTypeName; } else { fieldTypeName = typeof(string).FullName; } if (match.Repeats != 1) fieldTypeName += "[]"; CodeTypeMember member = WebCodeGenerator.AddMember(codeClass, fieldTypeName, name, null, metadata, CodeFlags.IsPublic, options); if (match.Matches.Count == 0 && match.Type.Length > 0) { ImportContext.Warnings |= ServiceDescriptionImportWarnings.OptionalExtensionsIgnored; ProtocolImporter.AddWarningComment(member.Comments, Res.GetString(Res.WebTextMatchIgnoredTypeWarning)); } } for (int i = 0; i < fieldTypeNames.Length; i++) { string fieldTypeName = fieldTypeNames[i]; if (fieldTypeName != null) { GenerateCode(fieldTypeName, matches[i].Matches, options); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OracleSqlParser.cs
- Attributes.cs
- ColorTransform.cs
- EventMappingSettingsCollection.cs
- Help.cs
- RootDesignerSerializerAttribute.cs
- LayoutTable.cs
- Int32Rect.cs
- BuiltInExpr.cs
- EventItfInfo.cs
- RayMeshGeometry3DHitTestResult.cs
- ErrorFormatterPage.cs
- CachedRequestParams.cs
- DifferencingCollection.cs
- SafeFindHandle.cs
- SettingsProviderCollection.cs
- MsmqChannelListenerBase.cs
- BitmapEffectInputConnector.cs
- MetabaseReader.cs
- UnsafeNativeMethods.cs
- CommandEventArgs.cs
- UInt32Storage.cs
- XPathNode.cs
- CompositeDispatchFormatter.cs
- TemplateControlParser.cs
- GatewayIPAddressInformationCollection.cs
- MetadataSource.cs
- IdentityNotMappedException.cs
- CmsInterop.cs
- Freezable.cs
- IntegrationExceptionEventArgs.cs
- XmlSortKeyAccumulator.cs
- DataControlImageButton.cs
- SessionSwitchEventArgs.cs
- MsdtcClusterUtils.cs
- MonitorWrapper.cs
- RecognizedAudio.cs
- Peer.cs
- TextServicesCompartment.cs
- TemplatedWizardStep.cs
- safelink.cs
- ContactManager.cs
- DesignerView.Commands.cs
- DefinitionBase.cs
- ServiceDefaults.cs
- BuildProviderUtils.cs
- HttpDebugHandler.cs
- DataSvcMapFileSerializer.cs
- AssociationType.cs
- GifBitmapDecoder.cs
- EntityViewGenerator.cs
- RuntimeEnvironment.cs
- ReadOnlyCollectionBuilder.cs
- PointLightBase.cs
- CoTaskMemSafeHandle.cs
- ChannelServices.cs
- ResolveResponse.cs
- HTMLTextWriter.cs
- ColumnCollection.cs
- Error.cs
- OneWayElement.cs
- AssemblyAttributesGoHere.cs
- XmlCollation.cs
- ExtensionQuery.cs
- PropertyMapper.cs
- XmlHierarchyData.cs
- IteratorDescriptor.cs
- SerializationException.cs
- BindableTemplateBuilder.cs
- XPathBuilder.cs
- FileDialog_Vista_Interop.cs
- ZipIOFileItemStream.cs
- AttachedAnnotation.cs
- RegexCode.cs
- XPathAncestorIterator.cs
- DocumentOrderQuery.cs
- Schema.cs
- TypedRowGenerator.cs
- SlipBehavior.cs
- WizardStepBase.cs
- ToolStripDropTargetManager.cs
- XamlTemplateSerializer.cs
- PrintDialog.cs
- StructureChangedEventArgs.cs
- FixedSchema.cs
- DbConvert.cs
- LineServicesCallbacks.cs
- CaretElement.cs
- XmlSchemaAttributeGroup.cs
- TypeConstant.cs
- HierarchicalDataBoundControlAdapter.cs
- GradientBrush.cs
- PaintEvent.cs
- WeakReadOnlyCollection.cs
- SchemaNames.cs
- ProtocolReflector.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- OleDbReferenceCollection.cs
- CompilerCollection.cs
- LayoutEditorPart.cs