Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / Configuration / TypeElement.cs / 1305376 / TypeElement.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Runtime.Serialization.Configuration
{
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.ServiceModel.Diagnostics;
using System.Security;
public sealed partial class TypeElement : ConfigurationElement
{
public TypeElement()
{
}
public TypeElement(string typeName)
: this()
{
if (String.IsNullOrEmpty(typeName))
{
throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("typeName");
}
this.Type = typeName;
}
internal string Key
{
get { return this.key; }
}
[ConfigurationProperty(ConfigurationStrings.DefaultCollectionName, DefaultValue = null, Options = ConfigurationPropertyOptions.IsDefaultCollection)]
public ParameterElementCollection Parameters
{
get { return (ParameterElementCollection)base[ConfigurationStrings.DefaultCollectionName]; }
}
protected override void Reset(ConfigurationElement parentElement)
{
TypeElement parent = (TypeElement)parentElement;
this.key = parent.key;
base.Reset(parentElement);
}
[ConfigurationProperty(ConfigurationStrings.Type, DefaultValue = "")]
[StringValidator(MinLength = 0)]
public string Type
{
get { return (string)base[ConfigurationStrings.Type]; }
set { base[ConfigurationStrings.Type] = value; }
}
[ConfigurationProperty(ConfigurationStrings.Index, DefaultValue = 0)]
[IntegerValidator(MinValue = 0)]
public int Index
{
get { return (int)base[ConfigurationStrings.Index]; }
set { base[ConfigurationStrings.Index] = value; }
}
[Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - Loads type given name in configuration."
+ " Since this information is used to determine whether a particular type is included as a known type,"
+ " changes to the logic should be reviewed.")]
internal Type GetType(string rootType, Type[] typeArgs)
{
return GetType(rootType, typeArgs, this.Type, this.Index, this.Parameters);
}
[Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - Loads type given name in configuration."
+ " Since this information is used to determine whether a particular type is included as a known type,"
+ " changes to the logic should be reviewed.")]
internal static Type GetType(string rootType, Type[] typeArgs, string type, int index, ParameterElementCollection parameters)
{
if (String.IsNullOrEmpty(type))
{
if (typeArgs == null || index >= typeArgs.Length)
{
int typeArgsCount = typeArgs == null ? 0 : typeArgs.Length;
if (typeArgsCount == 0)
{
throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigIndexOutOfBoundsZero,
rootType,
typeArgsCount,
index));
}
else
{
throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigIndexOutOfBounds,
rootType,
typeArgsCount,
index));
}
}
return typeArgs[index];
}
Type t = System.Type.GetType(type, true);
if (t.IsGenericTypeDefinition)
{
if (parameters.Count != t.GetGenericArguments().Length)
throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigGenericParamMismatch,
type,
t.GetGenericArguments().Length,
parameters.Count));
Type[] types = new Type[parameters.Count];
for (int i = 0; i < types.Length; ++i)
{
types[i] = parameters[i].GetType(rootType, typeArgs);
}
t = t.MakeGenericType(types);
}
return t;
}
string key = Guid.NewGuid().ToString();
}
}
// 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
- BrushValueSerializer.cs
- UIPermission.cs
- DecimalAnimation.cs
- ExpressionCopier.cs
- Rotation3DAnimation.cs
- StrokeNodeOperations.cs
- Storyboard.cs
- ListViewUpdatedEventArgs.cs
- EntityDataSourceDesigner.cs
- MimeObjectFactory.cs
- ScrollEventArgs.cs
- SqlBinder.cs
- ConfigurationSectionCollection.cs
- DrawingBrush.cs
- AppDomainProtocolHandler.cs
- Formatter.cs
- DivideByZeroException.cs
- InvalidPropValue.cs
- AccessorTable.cs
- WebPartConnectionsCancelEventArgs.cs
- InlineUIContainer.cs
- NativeMethods.cs
- DeferredReference.cs
- NativeCppClassAttribute.cs
- MultipartIdentifier.cs
- LabelAutomationPeer.cs
- SelectionItemPattern.cs
- Geometry.cs
- ExpanderAutomationPeer.cs
- Msec.cs
- CapabilitiesRule.cs
- SvcMapFile.cs
- ISAPIRuntime.cs
- metadatamappinghashervisitor.cs
- TableLayoutStyle.cs
- EntityDataSourceUtil.cs
- LineVisual.cs
- PreparingEnlistment.cs
- TaiwanLunisolarCalendar.cs
- ColorPalette.cs
- HybridWebProxyFinder.cs
- TextTreeNode.cs
- RelationshipType.cs
- SearchForVirtualItemEventArgs.cs
- XmlAnyElementAttributes.cs
- Material.cs
- StartUpEventArgs.cs
- SecurityTokenProvider.cs
- RadialGradientBrush.cs
- BitmapInitialize.cs
- BinaryObjectWriter.cs
- SqlConnectionString.cs
- TreeView.cs
- ServerIdentity.cs
- PtsHelper.cs
- BuildManagerHost.cs
- AudioFormatConverter.cs
- AuthenticationException.cs
- UserControl.cs
- ToolConsole.cs
- WindowsGraphics2.cs
- ServiceMetadataExtension.cs
- SplineKeyFrames.cs
- RangeValuePatternIdentifiers.cs
- DataSourceHelper.cs
- LineUtil.cs
- NonParentingControl.cs
- XmlAttributeProperties.cs
- BufferCache.cs
- SqlServices.cs
- DataGridHelper.cs
- XmlArrayItemAttributes.cs
- EngineSiteSapi.cs
- Point3DCollectionValueSerializer.cs
- Parser.cs
- _LocalDataStoreMgr.cs
- RuntimeConfig.cs
- ViewBox.cs
- DropSource.cs
- HitTestDrawingContextWalker.cs
- WindowsNonControl.cs
- GridViewCommandEventArgs.cs
- Misc.cs
- OperandQuery.cs
- EUCJPEncoding.cs
- StateItem.cs
- ApplicationInfo.cs
- StringDictionary.cs
- rsa.cs
- SessionPageStatePersister.cs
- DataGridAutoFormat.cs
- DataGridViewIntLinkedList.cs
- PageSettings.cs
- TdsParserStateObject.cs
- TableMethodGenerator.cs
- OperatorExpressions.cs
- OperationInfoBase.cs
- Drawing.cs
- BindValidator.cs
- DependencyPropertyAttribute.cs