Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Profile / ProfileManager.cs / 4 / ProfileManager.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* ProfileManager
*
* Copyright (c) 2002 Microsoft Corporation
*/
namespace System.Web.Profile
{
using System.Security.Principal;
using System.Security.Permissions;
using System.Collections;
using System.Collections.Specialized;
using System.Web.Configuration;
using System.Web.Util;
using System.Web.Security;
using System.Web.Compilation;
using System.Configuration;
using System.Configuration.Provider;
using System.Reflection;
using System.CodeDom;
using System.Web.Hosting;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public static class ProfileManager
{
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static bool DeleteProfile(string username)
{
SecUtility.CheckParameter( ref username, true, true, true, 0, "username" );
return (Provider.DeleteProfiles(new string [] {username}) != 0);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int DeleteProfiles(ProfileInfoCollection profiles)
{
if( profiles == null )
{
throw new ArgumentNullException( "profiles" );
}
if ( profiles.Count < 1 )
{
throw new ArgumentException(
SR.GetString(
SR.Parameter_collection_empty,
"profiles" ),
"profiles" );
}
foreach (ProfileInfo pi in profiles) {
string username = pi.UserName;
SecUtility.CheckParameter(ref username, true, true, true, 0, "UserName");
}
return Provider.DeleteProfiles(profiles);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int DeleteProfiles(string[] usernames)
{
SecUtility.CheckArrayParameter( ref usernames,
true,
true,
true,
0,
"usernames");
return Provider.DeleteProfiles(usernames);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
{
return Provider.DeleteInactiveProfiles(authenticationOption, userInactiveSinceDate);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int GetNumberOfProfiles(ProfileAuthenticationOption authenticationOption)
{
return Provider.GetNumberOfInactiveProfiles(authenticationOption, DateTime.Now.AddDays(1)); //
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int GetNumberOfInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
{
return Provider.GetNumberOfInactiveProfiles(authenticationOption, userInactiveSinceDate);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption)
{
int totalRecords;
return Provider.GetAllProfiles(authenticationOption, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption,
int pageIndex,
int pageSize,
out int totalRecords)
{
return Provider.GetAllProfiles(authenticationOption, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
DateTime userInactiveSinceDate)
{
int totalRecords;
return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
DateTime userInactiveSinceDate,
int pageIndex,
int pageSize,
out int totalRecords)
{
return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindProfilesByUserName(ProfileAuthenticationOption authenticationOption,
string usernameToMatch)
{
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
int totalRecords;
return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption,
string usernameToMatch,
int pageIndex,
int pageSize,
out int totalRecords)
{
if ( pageIndex < 0 )
{
throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex");
}
if ( pageSize < 1 )
{
throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
}
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption,
string usernameToMatch,
DateTime userInactiveSinceDate)
{
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
int totalRecords;
return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption,
string usernameToMatch,
DateTime userInactiveSinceDate,
int pageIndex,
int pageSize,
out int totalRecords)
{
if ( pageIndex < 0 )
{
throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex");
}
if ( pageSize < 1 )
{
throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
}
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Properties
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static bool Enabled {
get {
//
if (!s_Initialized && !s_InitializedEnabled) {
InitializeEnabled(false);
}
return s_Enabled;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static string ApplicationName {
get {
return Provider.ApplicationName;
}
set {
Provider.ApplicationName = value;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static bool AutomaticSaveEnabled {
get {
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
// WOS #1544130: Don't initialize providers when getting this property, because it is called in ProfileModule.Init
InitializeEnabled(false);
return s_AutomaticSaveEnabled;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileProvider Provider {
get {
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
Initialize(true);
return s_Provider;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileProviderCollection Providers {
get {
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
Initialize(true);
return s_Providers;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Private stuff
private static void InitializeEnabled(bool initProviders) {
if (!s_Initialized || !s_InitializedProviders) {
lock (s_Lock) {
if (!s_Initialized || !s_InitializedProviders) {
try {
ProfileSection config = RuntimeConfig.GetAppConfig().Profile;
if (!s_InitializedEnabled) {
s_Enabled = config.Enabled && HttpRuntime.HasAspNetHostingPermission(AspNetHostingPermissionLevel.Low);
s_AutomaticSaveEnabled = s_Enabled && config.AutomaticSaveEnabled;
s_InitializedEnabled = true;
}
if (initProviders && s_Enabled && !s_InitializedProviders) {
InitProviders(config);
s_InitializedProviders = true;
}
}
catch (Exception e) {
s_InitException = e;
}
s_Initialized = true;
}
}
}
}
private static void Initialize(bool throwIfNotEnabled)
{
InitializeEnabled(true);
if (s_InitException != null)
throw s_InitException;
if (throwIfNotEnabled && !s_Enabled)
throw new ProviderException(SR.GetString(SR.Profile_not_enabled));
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
static private void InitProviders(ProfileSection config)
{
#if FEATURE_PAL // FEATURE_PAL won't be supporting profiling.
return;
#else // FEATURE_PAL
s_Providers = new ProfileProviderCollection();
if (config.Providers != null) {
ProvidersHelper.InstantiateProviders(config.Providers, s_Providers, typeof(ProfileProvider));
}
s_Providers.SetReadOnly();
if (config.DefaultProvider == null)
throw new ProviderException(SR.GetString(SR.Profile_default_provider_not_specified));
s_Provider = (ProfileProvider) s_Providers[config.DefaultProvider];
if (s_Provider == null)
throw new ConfigurationErrorsException(SR.GetString(SR.Profile_default_provider_not_found), config.ElementInformation.Properties["providers"].Source, config.ElementInformation.Properties["providers"].LineNumber);
#endif // FEATURE_PAL
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
private static ProfileProvider s_Provider;
private static ProfileProviderCollection s_Providers;
private static bool s_Enabled;
private static bool s_Initialized;
private static bool s_InitializedProviders;
private static object s_Lock = new object();
private static Exception s_InitException;
private static bool s_InitializedEnabled;
private static bool s_AutomaticSaveEnabled;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* ProfileManager
*
* Copyright (c) 2002 Microsoft Corporation
*/
namespace System.Web.Profile
{
using System.Security.Principal;
using System.Security.Permissions;
using System.Collections;
using System.Collections.Specialized;
using System.Web.Configuration;
using System.Web.Util;
using System.Web.Security;
using System.Web.Compilation;
using System.Configuration;
using System.Configuration.Provider;
using System.Reflection;
using System.CodeDom;
using System.Web.Hosting;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public static class ProfileManager
{
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static bool DeleteProfile(string username)
{
SecUtility.CheckParameter( ref username, true, true, true, 0, "username" );
return (Provider.DeleteProfiles(new string [] {username}) != 0);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int DeleteProfiles(ProfileInfoCollection profiles)
{
if( profiles == null )
{
throw new ArgumentNullException( "profiles" );
}
if ( profiles.Count < 1 )
{
throw new ArgumentException(
SR.GetString(
SR.Parameter_collection_empty,
"profiles" ),
"profiles" );
}
foreach (ProfileInfo pi in profiles) {
string username = pi.UserName;
SecUtility.CheckParameter(ref username, true, true, true, 0, "UserName");
}
return Provider.DeleteProfiles(profiles);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int DeleteProfiles(string[] usernames)
{
SecUtility.CheckArrayParameter( ref usernames,
true,
true,
true,
0,
"usernames");
return Provider.DeleteProfiles(usernames);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
{
return Provider.DeleteInactiveProfiles(authenticationOption, userInactiveSinceDate);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int GetNumberOfProfiles(ProfileAuthenticationOption authenticationOption)
{
return Provider.GetNumberOfInactiveProfiles(authenticationOption, DateTime.Now.AddDays(1)); //
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static int GetNumberOfInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
{
return Provider.GetNumberOfInactiveProfiles(authenticationOption, userInactiveSinceDate);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption)
{
int totalRecords;
return Provider.GetAllProfiles(authenticationOption, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption,
int pageIndex,
int pageSize,
out int totalRecords)
{
return Provider.GetAllProfiles(authenticationOption, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
DateTime userInactiveSinceDate)
{
int totalRecords;
return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption,
DateTime userInactiveSinceDate,
int pageIndex,
int pageSize,
out int totalRecords)
{
return Provider.GetAllInactiveProfiles(authenticationOption, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindProfilesByUserName(ProfileAuthenticationOption authenticationOption,
string usernameToMatch)
{
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
int totalRecords;
return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption,
string usernameToMatch,
int pageIndex,
int pageSize,
out int totalRecords)
{
if ( pageIndex < 0 )
{
throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex");
}
if ( pageSize < 1 )
{
throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
}
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
return Provider.FindProfilesByUserName(authenticationOption, usernameToMatch, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption,
string usernameToMatch,
DateTime userInactiveSinceDate)
{
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
int totalRecords;
return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, 0, Int32.MaxValue, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption,
string usernameToMatch,
DateTime userInactiveSinceDate,
int pageIndex,
int pageSize,
out int totalRecords)
{
if ( pageIndex < 0 )
{
throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex");
}
if ( pageSize < 1 )
{
throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize");
}
SecUtility.CheckParameter( ref usernameToMatch,
true,
true,
false,
0,
"usernameToMatch" );
return Provider.FindInactiveProfilesByUserName(authenticationOption, usernameToMatch, userInactiveSinceDate, pageIndex, pageSize, out totalRecords);
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Properties
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static bool Enabled {
get {
//
if (!s_Initialized && !s_InitializedEnabled) {
InitializeEnabled(false);
}
return s_Enabled;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static string ApplicationName {
get {
return Provider.ApplicationName;
}
set {
Provider.ApplicationName = value;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static bool AutomaticSaveEnabled {
get {
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
// WOS #1544130: Don't initialize providers when getting this property, because it is called in ProfileModule.Init
InitializeEnabled(false);
return s_AutomaticSaveEnabled;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileProvider Provider {
get {
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
Initialize(true);
return s_Provider;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
public static ProfileProviderCollection Providers {
get {
HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);
Initialize(true);
return s_Providers;
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Private stuff
private static void InitializeEnabled(bool initProviders) {
if (!s_Initialized || !s_InitializedProviders) {
lock (s_Lock) {
if (!s_Initialized || !s_InitializedProviders) {
try {
ProfileSection config = RuntimeConfig.GetAppConfig().Profile;
if (!s_InitializedEnabled) {
s_Enabled = config.Enabled && HttpRuntime.HasAspNetHostingPermission(AspNetHostingPermissionLevel.Low);
s_AutomaticSaveEnabled = s_Enabled && config.AutomaticSaveEnabled;
s_InitializedEnabled = true;
}
if (initProviders && s_Enabled && !s_InitializedProviders) {
InitProviders(config);
s_InitializedProviders = true;
}
}
catch (Exception e) {
s_InitException = e;
}
s_Initialized = true;
}
}
}
}
private static void Initialize(bool throwIfNotEnabled)
{
InitializeEnabled(true);
if (s_InitException != null)
throw s_InitException;
if (throwIfNotEnabled && !s_Enabled)
throw new ProviderException(SR.GetString(SR.Profile_not_enabled));
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
static private void InitProviders(ProfileSection config)
{
#if FEATURE_PAL // FEATURE_PAL won't be supporting profiling.
return;
#else // FEATURE_PAL
s_Providers = new ProfileProviderCollection();
if (config.Providers != null) {
ProvidersHelper.InstantiateProviders(config.Providers, s_Providers, typeof(ProfileProvider));
}
s_Providers.SetReadOnly();
if (config.DefaultProvider == null)
throw new ProviderException(SR.GetString(SR.Profile_default_provider_not_specified));
s_Provider = (ProfileProvider) s_Providers[config.DefaultProvider];
if (s_Provider == null)
throw new ConfigurationErrorsException(SR.GetString(SR.Profile_default_provider_not_found), config.ElementInformation.Properties["providers"].Source, config.ElementInformation.Properties["providers"].LineNumber);
#endif // FEATURE_PAL
}
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
private static ProfileProvider s_Provider;
private static ProfileProviderCollection s_Providers;
private static bool s_Enabled;
private static bool s_Initialized;
private static bool s_InitializedProviders;
private static object s_Lock = new object();
private static Exception s_InitException;
private static bool s_InitializedEnabled;
private static bool s_AutomaticSaveEnabled;
}
}
// 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
- XsdCachingReader.cs
- TempFiles.cs
- ConsumerConnectionPoint.cs
- Helpers.cs
- XmlDomTextWriter.cs
- GeneralTransform.cs
- Point3D.cs
- WebPartConnectionsCloseVerb.cs
- Int16Converter.cs
- ParagraphResult.cs
- Context.cs
- UriTemplateQueryValue.cs
- SQLGuid.cs
- ISAPIRuntime.cs
- SerialErrors.cs
- UniqueConstraint.cs
- X509Chain.cs
- XmlSchemaSimpleTypeRestriction.cs
- MessageFormatterConverter.cs
- XmlProcessingInstruction.cs
- TextOptionsInternal.cs
- Compiler.cs
- SrgsToken.cs
- OutOfProcStateClientManager.cs
- PtsCache.cs
- ResourceExpressionBuilder.cs
- HierarchicalDataSourceDesigner.cs
- CookieHandler.cs
- XmlIlTypeHelper.cs
- EntityContainerEntitySet.cs
- WindowsProgressbar.cs
- _OverlappedAsyncResult.cs
- TextServicesHost.cs
- KeyValueSerializer.cs
- DetailsViewDeletedEventArgs.cs
- EventSourceCreationData.cs
- EnumBuilder.cs
- WebBrowserUriTypeConverter.cs
- RandomNumberGenerator.cs
- TextFormatterHost.cs
- FileVersion.cs
- ValidatorCompatibilityHelper.cs
- FileDialog_Vista_Interop.cs
- WorkflowWebHostingModule.cs
- DataSvcMapFileSerializer.cs
- _Semaphore.cs
- XamlNamespaceHelper.cs
- XmlAtomErrorReader.cs
- SamlSubjectStatement.cs
- HuffmanTree.cs
- ObfuscateAssemblyAttribute.cs
- TdsParserStateObject.cs
- AttributeQuery.cs
- ellipse.cs
- GenericWebPart.cs
- documentation.cs
- DynamicFilterExpression.cs
- Decorator.cs
- FormatVersion.cs
- odbcmetadatacolumnnames.cs
- NetCodeGroup.cs
- dataSvcMapFileLoader.cs
- Visitor.cs
- FontClient.cs
- LoadItemsEventArgs.cs
- OdbcConnectionOpen.cs
- Rule.cs
- TableDetailsRow.cs
- DetailsViewCommandEventArgs.cs
- CompareValidator.cs
- ping.cs
- GlobalProxySelection.cs
- IriParsingElement.cs
- PenLineJoinValidation.cs
- SqlTransaction.cs
- HostingPreferredMapPath.cs
- TextMarkerSource.cs
- CategoryAttribute.cs
- EventLogRecord.cs
- HttpSessionStateWrapper.cs
- BaseTemplatedMobileComponentEditor.cs
- SchemaInfo.cs
- SettingsProperty.cs
- ClientFormsAuthenticationCredentials.cs
- Button.cs
- IndexerNameAttribute.cs
- newinstructionaction.cs
- TableHeaderCell.cs
- KoreanCalendar.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- InheritanceContextChangedEventManager.cs
- SizeAnimationUsingKeyFrames.cs
- CatalogZoneAutoFormat.cs
- CompositeDesignerAccessibleObject.cs
- ToolStripRenderEventArgs.cs
- RootBrowserWindowAutomationPeer.cs
- ParameterCollection.cs
- RawStylusInputCustomDataList.cs
- EventWaitHandle.cs
- unitconverter.cs