162 lines
4.5 KiB
C#
162 lines
4.5 KiB
C#
|
//------------------------------------------------------------
|
||
|
// 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;
|
||
|
}
|
||
|
}
|
||
|
}
|