Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Sys / System / Runtime / Versioning / FrameworkName.cs / 1305376 / FrameworkName.cs
using System; using System.Diagnostics; using System.Diagnostics.Contracts; using System.Globalization; using System.Text; namespace System.Runtime.Versioning { [Serializable] public sealed class FrameworkName : IEquatable{ // ---- SECTION: members supporting exposed properties -------------* #region members supporting exposed properties readonly String m_identifier = null; readonly Version m_version = null; readonly String m_profile = null; String m_fullName = null; const Char c_componentSeparator = ','; const Char c_keyValueSeparator = '='; const Char c_versionValuePrefix = 'v'; const String c_versionKey = "Version"; const String c_profileKey = "Profile"; #endregion members supporting exposed properties // ---- SECTION: public properties --------------* #region public properties public String Identifier { get { Contract.Assert(m_identifier != null); return m_identifier; } } public Version Version { get { Contract.Assert(m_version != null); return m_version; } } public String Profile { get { Contract.Assert(m_profile != null); return m_profile; } } public String FullName { get { if (m_fullName == null) { StringBuilder sb = new StringBuilder(); sb.Append(Identifier); sb.Append(c_componentSeparator); sb.Append(c_versionKey).Append(c_keyValueSeparator); sb.Append(c_versionValuePrefix); sb.Append(Version); if (!String.IsNullOrEmpty(Profile)) { sb.Append(c_componentSeparator); sb.Append(c_profileKey).Append(c_keyValueSeparator); sb.Append(Profile); } m_fullName = sb.ToString(); } Contract.Assert(m_fullName != null); return m_fullName; } } #endregion public properties // ---- SECTION: public instance methods --------------* #region public instance methods public override Boolean Equals(Object obj) { return Equals(obj as FrameworkName); } public Boolean Equals(FrameworkName other) { if (Object.ReferenceEquals(other, null)) { return false; } return Identifier == other.Identifier && Version == other.Version && Profile == other.Profile; } public override Int32 GetHashCode() { return Identifier.GetHashCode() ^ Version.GetHashCode() ^ Profile.GetHashCode(); } public override String ToString() { return FullName; } #endregion public instance methods // -------- SECTION: constructors -----------------* #region constructors public FrameworkName(String identifier, Version version) : this(identifier, version, null) {} public FrameworkName(String identifier, Version version, String profile) { if (identifier == null) { throw new ArgumentNullException("identifier"); } if (identifier.Trim().Length == 0) { throw new ArgumentException(SR.GetString(SR.net_emptystringcall, "identifier"), "identifier"); } if (version == null) { throw new ArgumentNullException("version"); } Contract.EndContractBlock(); m_identifier = identifier.Trim(); m_version = (Version)version.Clone(); m_profile = (profile == null) ? String.Empty : profile.Trim(); } // Parses strings in the following format: " , Version=[v|V] , Profile= " // - The identifier and version is required, profile is optional // - Only three components are allowed. // - The version string must be in the System.Version format; an optional "v" or "V" prefix is allowed public FrameworkName(String frameworkName) { if (frameworkName == null) { throw new ArgumentNullException("frameworkName"); } if (frameworkName.Length == 0) { throw new ArgumentException(SR.GetString(SR.net_emptystringcall, "frameworkName"), "frameworkName"); } Contract.EndContractBlock(); string[] components = frameworkName.Split(c_componentSeparator); // Identifer and Version are required, Profile is optional. if (components.Length < 2 || components.Length > 3) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameTooShort), "frameworkName"); } // // 1) Parse the "Identifier", which must come first. Trim any whitespace // m_identifier = components[0].Trim(); if (m_identifier.Length == 0) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalid), "frameworkName"); } bool versionFound = false; m_profile = String.Empty; // // The required "Version" and optional "Profile" component can be in any order // for (int i = 1; i < components.Length; i++) { // Get the key/value pair separated by '=' string[] keyValuePair = components[i].Split(c_keyValueSeparator); if (keyValuePair.Length != 2) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalid), "frameworkName"); } // Get the key and value, trimming any whitespace string key = keyValuePair[0].Trim(); string value = keyValuePair[1].Trim(); // // 2) Parse the required "Version" key value // if (key.Equals(c_versionKey, StringComparison.OrdinalIgnoreCase)) { versionFound = true; // Allow the version to include a 'v' or 'V' prefix... if (value.Length > 0 && (value[0] == c_versionValuePrefix || value[0] == 'V')) { value = value.Substring(1); } try { m_version = new Version(value); } catch (Exception e) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalidVersion), "frameworkName", e); } } // // 3) Parse the optional "Profile" key value // else if (key.Equals(c_profileKey, StringComparison.OrdinalIgnoreCase)) { if (!String.IsNullOrEmpty(value)) { m_profile = value; } } else { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalid), "frameworkName"); } } if (!versionFound) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameMissingVersion), "frameworkName"); } } #endregion constructors // -------- SECTION: public static methods -----------------* #region public static methods public static Boolean operator ==(FrameworkName left, FrameworkName right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } public static Boolean operator !=(FrameworkName left, FrameworkName right) { return !(left == right); } #endregion public static methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Diagnostics; using System.Diagnostics.Contracts; using System.Globalization; using System.Text; namespace System.Runtime.Versioning { [Serializable] public sealed class FrameworkName : IEquatable { // ---- SECTION: members supporting exposed properties -------------* #region members supporting exposed properties readonly String m_identifier = null; readonly Version m_version = null; readonly String m_profile = null; String m_fullName = null; const Char c_componentSeparator = ','; const Char c_keyValueSeparator = '='; const Char c_versionValuePrefix = 'v'; const String c_versionKey = "Version"; const String c_profileKey = "Profile"; #endregion members supporting exposed properties // ---- SECTION: public properties --------------* #region public properties public String Identifier { get { Contract.Assert(m_identifier != null); return m_identifier; } } public Version Version { get { Contract.Assert(m_version != null); return m_version; } } public String Profile { get { Contract.Assert(m_profile != null); return m_profile; } } public String FullName { get { if (m_fullName == null) { StringBuilder sb = new StringBuilder(); sb.Append(Identifier); sb.Append(c_componentSeparator); sb.Append(c_versionKey).Append(c_keyValueSeparator); sb.Append(c_versionValuePrefix); sb.Append(Version); if (!String.IsNullOrEmpty(Profile)) { sb.Append(c_componentSeparator); sb.Append(c_profileKey).Append(c_keyValueSeparator); sb.Append(Profile); } m_fullName = sb.ToString(); } Contract.Assert(m_fullName != null); return m_fullName; } } #endregion public properties // ---- SECTION: public instance methods --------------* #region public instance methods public override Boolean Equals(Object obj) { return Equals(obj as FrameworkName); } public Boolean Equals(FrameworkName other) { if (Object.ReferenceEquals(other, null)) { return false; } return Identifier == other.Identifier && Version == other.Version && Profile == other.Profile; } public override Int32 GetHashCode() { return Identifier.GetHashCode() ^ Version.GetHashCode() ^ Profile.GetHashCode(); } public override String ToString() { return FullName; } #endregion public instance methods // -------- SECTION: constructors -----------------* #region constructors public FrameworkName(String identifier, Version version) : this(identifier, version, null) {} public FrameworkName(String identifier, Version version, String profile) { if (identifier == null) { throw new ArgumentNullException("identifier"); } if (identifier.Trim().Length == 0) { throw new ArgumentException(SR.GetString(SR.net_emptystringcall, "identifier"), "identifier"); } if (version == null) { throw new ArgumentNullException("version"); } Contract.EndContractBlock(); m_identifier = identifier.Trim(); m_version = (Version)version.Clone(); m_profile = (profile == null) ? String.Empty : profile.Trim(); } // Parses strings in the following format: " , Version=[v|V] , Profile= " // - The identifier and version is required, profile is optional // - Only three components are allowed. // - The version string must be in the System.Version format; an optional "v" or "V" prefix is allowed public FrameworkName(String frameworkName) { if (frameworkName == null) { throw new ArgumentNullException("frameworkName"); } if (frameworkName.Length == 0) { throw new ArgumentException(SR.GetString(SR.net_emptystringcall, "frameworkName"), "frameworkName"); } Contract.EndContractBlock(); string[] components = frameworkName.Split(c_componentSeparator); // Identifer and Version are required, Profile is optional. if (components.Length < 2 || components.Length > 3) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameTooShort), "frameworkName"); } // // 1) Parse the "Identifier", which must come first. Trim any whitespace // m_identifier = components[0].Trim(); if (m_identifier.Length == 0) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalid), "frameworkName"); } bool versionFound = false; m_profile = String.Empty; // // The required "Version" and optional "Profile" component can be in any order // for (int i = 1; i < components.Length; i++) { // Get the key/value pair separated by '=' string[] keyValuePair = components[i].Split(c_keyValueSeparator); if (keyValuePair.Length != 2) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalid), "frameworkName"); } // Get the key and value, trimming any whitespace string key = keyValuePair[0].Trim(); string value = keyValuePair[1].Trim(); // // 2) Parse the required "Version" key value // if (key.Equals(c_versionKey, StringComparison.OrdinalIgnoreCase)) { versionFound = true; // Allow the version to include a 'v' or 'V' prefix... if (value.Length > 0 && (value[0] == c_versionValuePrefix || value[0] == 'V')) { value = value.Substring(1); } try { m_version = new Version(value); } catch (Exception e) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalidVersion), "frameworkName", e); } } // // 3) Parse the optional "Profile" key value // else if (key.Equals(c_profileKey, StringComparison.OrdinalIgnoreCase)) { if (!String.IsNullOrEmpty(value)) { m_profile = value; } } else { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameInvalid), "frameworkName"); } } if (!versionFound) { throw new ArgumentException(SR.GetString(SR.Argument_FrameworkNameMissingVersion), "frameworkName"); } } #endregion constructors // -------- SECTION: public static methods -----------------* #region public static methods public static Boolean operator ==(FrameworkName left, FrameworkName right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } public static Boolean operator !=(FrameworkName left, FrameworkName right) { return !(left == right); } #endregion public static methods } } // 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
- Enum.cs
- DoubleAnimation.cs
- CodeMemberField.cs
- XmlSchemaAttributeGroupRef.cs
- HitTestParameters3D.cs
- PathSegment.cs
- PointF.cs
- DBPropSet.cs
- SqlMetaData.cs
- FormatterConverter.cs
- EarlyBoundInfo.cs
- X509Utils.cs
- XmlBinaryWriterSession.cs
- AccessKeyManager.cs
- DeviceFiltersSection.cs
- PerformanceCounterManager.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- UndoManager.cs
- BuilderPropertyEntry.cs
- ComEventsMethod.cs
- BeginEvent.cs
- AutomationPatternInfo.cs
- StrongName.cs
- RadioButtonStandardAdapter.cs
- SemanticBasicElement.cs
- ObjectStateManagerMetadata.cs
- IDReferencePropertyAttribute.cs
- OuterGlowBitmapEffect.cs
- DesignerActionUI.cs
- ReflectionUtil.cs
- IDispatchConstantAttribute.cs
- StsCommunicationException.cs
- QueuePropertyVariants.cs
- SafeHandles.cs
- ActiveXSite.cs
- ValidatorCompatibilityHelper.cs
- GeneralTransformCollection.cs
- PeerNameRecord.cs
- ForeignKeyConstraint.cs
- ObjectManager.cs
- ServerIdentity.cs
- ValidationError.cs
- SchemaNames.cs
- ListSurrogate.cs
- CompilerGlobalScopeAttribute.cs
- RemotingConfigParser.cs
- DynamicObjectAccessor.cs
- MsmqIntegrationElement.cs
- Msec.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- WizardPanelChangingEventArgs.cs
- MachineKeySection.cs
- Encoder.cs
- _LocalDataStore.cs
- XmlSchemaSequence.cs
- KeyPressEvent.cs
- ObjectAssociationEndMapping.cs
- FontNamesConverter.cs
- SmtpMail.cs
- SafeCoTaskMem.cs
- hresults.cs
- Ticks.cs
- NamedElement.cs
- DispatcherEventArgs.cs
- TraceContext.cs
- NativeObjectSecurity.cs
- XmlImplementation.cs
- Calendar.cs
- WinFormsUtils.cs
- PropertyEmitterBase.cs
- XmlDigitalSignatureProcessor.cs
- PageThemeParser.cs
- InProcStateClientManager.cs
- DataRowView.cs
- SEHException.cs
- ToolStripDropDownButton.cs
- TypeConverterAttribute.cs
- Point.cs
- ObjectViewFactory.cs
- HttpRuntime.cs
- StoreItemCollection.cs
- DataGridViewRowHeaderCell.cs
- SiblingIterators.cs
- HwndMouseInputProvider.cs
- DataGridViewMethods.cs
- StringDictionary.cs
- PageClientProxyGenerator.cs
- NullableFloatSumAggregationOperator.cs
- VerificationException.cs
- FileSystemInfo.cs
- XmlQualifiedName.cs
- SendMailErrorEventArgs.cs
- SuppressMergeCheckAttribute.cs
- WinEventWrap.cs
- MobileCategoryAttribute.cs
- ContextQuery.cs
- SqlCommandSet.cs
- SQLDecimal.cs
- StylusShape.cs
- StatusBarItem.cs