|
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Description
{
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Net.Security;
using System.Reflection;
using System.ServiceModel.Security;
[DebuggerDisplay("Name={name}, Namespace={ns}, Type={Type}, Index={index}}")]
public class MessagePartDescription
{
XmlName name;
string ns;
int index;
Type type;
int serializationPosition;
ProtectionLevel protectionLevel;
bool hasProtectionLevel;
MemberInfo memberInfo;
ICustomAttributeProvider additionalAttributesProvider;
bool multiple;
string baseType;
string uniquePartName;
public MessagePartDescription(string name, string ns)
{
if (name == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name", SR.GetString(SR.SFxParameterNameCannotBeNull));
}
this.name = new XmlName(name, true /*isEncoded*/);
if (!string.IsNullOrEmpty(ns))
{
NamingHelper.CheckUriParameter(ns, "ns");
}
this.ns = ns;
}
internal MessagePartDescription(MessagePartDescription other)
{
this.name = other.name;
this.ns = other.ns;
this.index = other.index;
this.type = other.type;
this.serializationPosition = other.serializationPosition;
this.hasProtectionLevel = other.hasProtectionLevel;
this.protectionLevel = other.protectionLevel;
this.memberInfo = other.memberInfo;
this.multiple = other.multiple;
this.additionalAttributesProvider = other.additionalAttributesProvider;
this.baseType = other.baseType;
this.uniquePartName = other.uniquePartName;
}
internal virtual MessagePartDescription Clone()
{
return new MessagePartDescription(this);
}
internal string BaseType
{
get { return this.baseType; }
set { this.baseType = value; }
}
internal XmlName XmlName
{
get { return this.name; }
}
internal string CodeName
{
get { return this.name.DecodedName; }
}
public string Name
{
get { return this.name.EncodedName; }
}
public string Namespace
{
get { return this.ns; }
}
public Type Type
{
get { return type; }
set { type = value; }
}
public int Index
{
get { return index; }
set { index = value; }
}
[DefaultValue(false)]
public bool Multiple
{
get { return this.multiple; }
set { this.multiple = value; }
}
public ProtectionLevel ProtectionLevel
{
get { return this.protectionLevel; }
set
{
if (!ProtectionLevelHelper.IsDefined(value))
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
this.protectionLevel = value;
this.hasProtectionLevel = true;
}
}
public bool HasProtectionLevel
{
get { return this.hasProtectionLevel; }
}
public MemberInfo MemberInfo
{
get { return this.memberInfo; }
set { this.memberInfo = value; }
}
internal ICustomAttributeProvider AdditionalAttributesProvider
{
get { return this.additionalAttributesProvider ?? this.memberInfo; }
set { this.additionalAttributesProvider = value; }
}
internal string UniquePartName
{
get { return this.uniquePartName; }
set { this.uniquePartName = value; }
}
internal int SerializationPosition
{
get { return serializationPosition; }
set { serializationPosition = value; }
}
internal void ResetProtectionLevel()
{
this.protectionLevel = ProtectionLevel.None;
this.hasProtectionLevel = false;
}
}
}
|