Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / AppModel / ResourceContainer.cs / 1305600 / ResourceContainer.cs
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// ResourceContainer is an implementation of the abstract Package class.
// It contains nontrivial overrides for GetPartCore and Exists.
// Many of the methods on Package are not applicable to loading application
// resources, so the ResourceContainer implementations of these methods throw
// the NotSupportedException.
//
// History:
// 10/04/2004: [....]: Initial creation.
// 03/15/2005: BruceMac: Remove DisposeCore() override since there are no resources
// to release.
// 06/16/2005: WeibZ, Remove DefaultResourceManager, and change the role of
// ResourceManagerWrapper.
//-----------------------------------------------------------------------------
using System;
using System.IO.Packaging;
using System.IO;
using System.Collections.Generic;
using System.Windows.Resources;
using System.Resources;
using System.Reflection;
using System.Globalization;
using MS.Internal.PresentationFramework; // SafeSecurityHelper
using System.Windows;
using System.Windows.Navigation;
using MS.Internal.Resources;
using System.Windows.Interop;
using System.Security;
namespace MS.Internal.AppModel
{
//
// ResourceContainer is an implementation of the abstract Package class.
// It contains nontrivial overrides for GetPartCore and Exists.
// Many of the methods on Package are not applicable to loading application
// resources, so the ResourceContainer implementations of these methods throw
// the NotSupportedException.
//
internal class ResourceContainer : System.IO.Packaging.Package
{
//-----------------------------------------------------
//
// Static Methods
//
//-----------------------------------------------------
#region Static Methods
internal static ResourceManagerWrapper ApplicationResourceManagerWrapper
{
get
{
if (_applicationResourceManagerWrapper == null)
{
// load main excutable assembly
Assembly asmApplication = Application.ResourceAssembly;
if (asmApplication != null)
{
_applicationResourceManagerWrapper = new ResourceManagerWrapper(asmApplication);
}
}
return _applicationResourceManagerWrapper;
}
}
//
// The FileShare mode to use for opening loose files. Currently this defaults to FileShare.Read
// Today it is not changed. If we decide that this should change in the future we can easily add
// a seter here.
//
internal static FileShare FileShare
{
get
{
return _fileShare;
}
}
#endregion
//------------------------------------------------------
//
// Public Constructors
//
//-----------------------------------------------------
#region Public Constructors
//
// Default Constructor
//
internal ResourceContainer() : base(FileAccess.Read)
{
}
#endregion
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
// None
//-----------------------------------------------------
//
// Public Methods
//
//------------------------------------------------------
#region Public Methods
//
// This method always returns true. This is because ResourceManager does not have a
// simple way to check if a resource exists without loading the resource stream (or failing to)
// so checking if a resource exists would be a very expensive task.
// A part will later be constructed and returned by GetPart(). This part class contains
// a ResourceManager which may or may not contain the requested resource. When someone
// calls GetStream() on PackagePart then we will attempt to get the stream for the named resource
// and potentially fail.
//
//
//
public override bool PartExists(Uri uri)
{
return true;
}
#endregion
//-----------------------------------------------------
//
// Public Events
//
//-----------------------------------------------------
// None
//-----------------------------------------------------
//
// Internal Constructors
//
//------------------------------------------------------
// None
//-----------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Members
internal const string XamlExt = ".xaml";
internal const string BamlExt = ".baml";
#endregion
//------------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Internal Events
//
//-----------------------------------------------------
// None
//-----------------------------------------------------
//
// Protected Constructors
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Protected Methods
//
//-----------------------------------------------------
#region Protected Methods
//
// This method creates a part containing the name of the resource and
// the resource manager that should contain it. If the resource manager
// does not contain the requested part then when GetStream() is called on
// the part it will return null.
//
//
//
///
/// 1. Critical - because calling add_AssemblyLoad
/// Safe - because only hooks up specific internal event handler only applicable to for non-browser hosted scneario
/// 2. Critical - because creating a new ResourcePart is critical, as the ResourceManagerWrapper
/// that it uses has an Assembly instance that is SecurityCritical data for accessing internal types.
/// Safe - because a ResourceManagerWrapper is being created based on a Uri name that gets mapped
/// to an assembly from which a stream for the Uri was created and GetResourceManagerWrapper
/// guarantees that given a Uri, the stream is always created from that mapped Assembly
///
[SecurityCritical, SecurityTreatAsSafe]
protected override PackagePart GetPartCore(Uri uri)
{
string partName;
bool isContentFile;
// AppDomain.AssemblyLoad event handler for standalone apps. This is added specifically for designer (Sparkle) scenario.
// We use the assembly name to fetch the cached resource manager. With this mechanism we will still get resource from the
// old version dll when a newer one is loaded. So whenever the AssemblyLoad event is fired, we will need to update the cache
// with the newly loaded assembly. This is currently only for designer so not needed for browser hosted apps.
// Attach the event handler before the first time we get the ResourceManagerWrapper.
if ((! assemblyLoadhandlerAttached) && (! BrowserInteropHelper.IsBrowserHosted))
{
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnAssemblyLoadEventHandler);
assemblyLoadhandlerAttached = true;
}
ResourceManagerWrapper rmWrapper = GetResourceManagerWrapper(uri, out partName, out isContentFile);
// If the part name was specified as Content at compile time then we will try to load
// the file directly. Otherwise we assume the user is looking for a resource.
if (isContentFile)
{
return new ContentFilePart(this, uri);
}
else
{
// Uri mapps to a resource stream.
// Make sure the resource id is exactly same as the one we used to create Resource
// at compile time.
partName = ResourceIDHelper.GetResourceIDFromRelativePath(partName);
return new ResourcePart(this, uri, partName, rmWrapper);
}
}
#endregion
//------------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
// AppDomain.AssemblyLoad event handler. Check whether the assembly's resourcemanager has
// been added to the cache. If it has, we need to update the cache with the newly loaded dll.
private void OnAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
Assembly assembly = args.LoadedAssembly;
// This is specific for designer (Sparkle) scenario: rebuild and reload dll using Load(Byte[]).
// We do not care about assemblies loaded into the reflection-only context or the Gaced assemblies.
// For example, in Sparkle whenever a project is built all dependent assemblies will be loaded reflection only.
// We do no care about those. Only when a assembly is loaded into the execution context, we will need to update the cache.
if ((! assembly.ReflectionOnly) && (! assembly.GlobalAssemblyCache))
{
AssemblyName assemblyInfo = new AssemblyName(assembly.FullName);
string assemblyName = assemblyInfo.Name.ToLowerInvariant();
string assemblyKey = string.Empty;
string key = assemblyName;
// Check if this newly loaded assembly is in the cache. If so, update the cache.
// If it is not in cache, do not do anything. It will be added on demand.
// The key could be Name, Name + Version, Name + PublicKeyToken, or Name + Version + PublicKeyToken.
// Otherwise, update the cache with the newly loaded dll.
// First check Name.
UpdateCachedRMW(key, args.LoadedAssembly);
string assemblyVersion = assemblyInfo.Version.ToString();
if (!String.IsNullOrEmpty(assemblyVersion))
{
key = key + assemblyVersion;
// Check Name + Version
UpdateCachedRMW(key, args.LoadedAssembly);
}
byte[] reqKeyToken = assemblyInfo.GetPublicKeyToken();
for (int i = 0; i < reqKeyToken.Length; i++)
{
assemblyKey += reqKeyToken[i].ToString("x", NumberFormatInfo.InvariantInfo);
}
if (!String.IsNullOrEmpty(assemblyKey))
{
key = key + assemblyKey;
// Check Name + Version + KeyToken
UpdateCachedRMW(key, args.LoadedAssembly);
key = assemblyName + assemblyKey;
// Check Name + KeyToken
UpdateCachedRMW(key, args.LoadedAssembly);
}
}
}
private void UpdateCachedRMW(string key, Assembly assembly)
{
if (_registeredResourceManagers.ContainsKey(key))
{
// Update the ResourceManagerWrapper with the new assembly.
// Note Package caches Part and Part holds on to ResourceManagerWrapper. Package does not provide a way for
// us to update their cache, so we update the assembly that the ResourceManagerWrapper holds on to. This way the
// Part cached in the Package class can reference the new dll too.
_registeredResourceManagers[key].Assembly = assembly;
}
}
//
// Searches the available ResourceManagerWrapper list for one that matches the given Uri.
// It could be either ResourceManagerWrapper for specific libary assembly or Application
// main assembly. Package enforces that all Uri will be correctly formated.
//
// Assumed to be relative
// The name of the file in the resource manager
// A flag to indicate that this path is a known loose file at compile time
//
private ResourceManagerWrapper GetResourceManagerWrapper(Uri uri, out string partName, out bool isContentFile)
{
string assemblyName;
string assemblyVersion;
string assemblyKey;
ResourceManagerWrapper rmwResult = ApplicationResourceManagerWrapper;
isContentFile = false;
BaseUriHelper.GetAssemblyNameAndPart(uri, out partName, out assemblyName, out assemblyVersion, out assemblyKey);
if (!String.IsNullOrEmpty(assemblyName))
{
string key = assemblyName + assemblyVersion + assemblyKey;
_registeredResourceManagers.TryGetValue(key.ToLowerInvariant(), out rmwResult);
// first time. Add this to the hash table
if (rmwResult == null)
{
Assembly assembly;
assembly = BaseUriHelper.GetLoadedAssembly(assemblyName, assemblyVersion, assemblyKey);
if (assembly.Equals(Application.ResourceAssembly))
{
// This Uri maps to Application Entry assembly even though it has ";component".
rmwResult = ApplicationResourceManagerWrapper;
}
else
{
rmwResult = new ResourceManagerWrapper(assembly);
}
_registeredResourceManagers[key.ToLowerInvariant()] = rmwResult;
}
}
if ((rmwResult == ApplicationResourceManagerWrapper))
{
if (rmwResult != null)
{
// If this is not a resource from a component then it might be
// a content file and not an application resource.
if (ContentFileHelper.IsContentFile(partName))
{
isContentFile = true;
rmwResult = null;
}
}
else
{
// Throw when Application.ResourceAssembly is null.
throw new IOException(SR.Get(SRID.EntryAssemblyIsNull));
}
}
return rmwResult;
}
#endregion
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Members
private static Dictionary _registeredResourceManagers = new Dictionary();
private static ResourceManagerWrapper _applicationResourceManagerWrapper = null;
private static FileShare _fileShare = FileShare.Read;
private static bool assemblyLoadhandlerAttached = false;
#endregion Private Members
//-----------------------------------------------------
//
// Uninteresting (but required) overrides
//
//-----------------------------------------------------
#region Uninteresting (but required) overrides
protected override PackagePart CreatePartCore(Uri uri, string contentType, CompressionOption compressionOption)
{
return null;
}
protected override void DeletePartCore(Uri uri)
{
throw new NotSupportedException();
}
protected override PackagePart[] GetPartsCore()
{
throw new NotSupportedException();
}
protected override void FlushCore()
{
throw new NotSupportedException();
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// ResourceContainer is an implementation of the abstract Package class.
// It contains nontrivial overrides for GetPartCore and Exists.
// Many of the methods on Package are not applicable to loading application
// resources, so the ResourceContainer implementations of these methods throw
// the NotSupportedException.
//
// History:
// 10/04/2004: [....]: Initial creation.
// 03/15/2005: BruceMac: Remove DisposeCore() override since there are no resources
// to release.
// 06/16/2005: WeibZ, Remove DefaultResourceManager, and change the role of
// ResourceManagerWrapper.
//-----------------------------------------------------------------------------
using System;
using System.IO.Packaging;
using System.IO;
using System.Collections.Generic;
using System.Windows.Resources;
using System.Resources;
using System.Reflection;
using System.Globalization;
using MS.Internal.PresentationFramework; // SafeSecurityHelper
using System.Windows;
using System.Windows.Navigation;
using MS.Internal.Resources;
using System.Windows.Interop;
using System.Security;
namespace MS.Internal.AppModel
{
//
// ResourceContainer is an implementation of the abstract Package class.
// It contains nontrivial overrides for GetPartCore and Exists.
// Many of the methods on Package are not applicable to loading application
// resources, so the ResourceContainer implementations of these methods throw
// the NotSupportedException.
//
internal class ResourceContainer : System.IO.Packaging.Package
{
//-----------------------------------------------------
//
// Static Methods
//
//-----------------------------------------------------
#region Static Methods
internal static ResourceManagerWrapper ApplicationResourceManagerWrapper
{
get
{
if (_applicationResourceManagerWrapper == null)
{
// load main excutable assembly
Assembly asmApplication = Application.ResourceAssembly;
if (asmApplication != null)
{
_applicationResourceManagerWrapper = new ResourceManagerWrapper(asmApplication);
}
}
return _applicationResourceManagerWrapper;
}
}
//
// The FileShare mode to use for opening loose files. Currently this defaults to FileShare.Read
// Today it is not changed. If we decide that this should change in the future we can easily add
// a seter here.
//
internal static FileShare FileShare
{
get
{
return _fileShare;
}
}
#endregion
//------------------------------------------------------
//
// Public Constructors
//
//-----------------------------------------------------
#region Public Constructors
//
// Default Constructor
//
internal ResourceContainer() : base(FileAccess.Read)
{
}
#endregion
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
// None
//-----------------------------------------------------
//
// Public Methods
//
//------------------------------------------------------
#region Public Methods
//
// This method always returns true. This is because ResourceManager does not have a
// simple way to check if a resource exists without loading the resource stream (or failing to)
// so checking if a resource exists would be a very expensive task.
// A part will later be constructed and returned by GetPart(). This part class contains
// a ResourceManager which may or may not contain the requested resource. When someone
// calls GetStream() on PackagePart then we will attempt to get the stream for the named resource
// and potentially fail.
//
//
//
public override bool PartExists(Uri uri)
{
return true;
}
#endregion
//-----------------------------------------------------
//
// Public Events
//
//-----------------------------------------------------
// None
//-----------------------------------------------------
//
// Internal Constructors
//
//------------------------------------------------------
// None
//-----------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Members
internal const string XamlExt = ".xaml";
internal const string BamlExt = ".baml";
#endregion
//------------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Internal Events
//
//-----------------------------------------------------
// None
//-----------------------------------------------------
//
// Protected Constructors
//
//-----------------------------------------------------
// None
//------------------------------------------------------
//
// Protected Methods
//
//-----------------------------------------------------
#region Protected Methods
//
// This method creates a part containing the name of the resource and
// the resource manager that should contain it. If the resource manager
// does not contain the requested part then when GetStream() is called on
// the part it will return null.
//
//
//
///
/// 1. Critical - because calling add_AssemblyLoad
/// Safe - because only hooks up specific internal event handler only applicable to for non-browser hosted scneario
/// 2. Critical - because creating a new ResourcePart is critical, as the ResourceManagerWrapper
/// that it uses has an Assembly instance that is SecurityCritical data for accessing internal types.
/// Safe - because a ResourceManagerWrapper is being created based on a Uri name that gets mapped
/// to an assembly from which a stream for the Uri was created and GetResourceManagerWrapper
/// guarantees that given a Uri, the stream is always created from that mapped Assembly
///
[SecurityCritical, SecurityTreatAsSafe]
protected override PackagePart GetPartCore(Uri uri)
{
string partName;
bool isContentFile;
// AppDomain.AssemblyLoad event handler for standalone apps. This is added specifically for designer (Sparkle) scenario.
// We use the assembly name to fetch the cached resource manager. With this mechanism we will still get resource from the
// old version dll when a newer one is loaded. So whenever the AssemblyLoad event is fired, we will need to update the cache
// with the newly loaded assembly. This is currently only for designer so not needed for browser hosted apps.
// Attach the event handler before the first time we get the ResourceManagerWrapper.
if ((! assemblyLoadhandlerAttached) && (! BrowserInteropHelper.IsBrowserHosted))
{
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnAssemblyLoadEventHandler);
assemblyLoadhandlerAttached = true;
}
ResourceManagerWrapper rmWrapper = GetResourceManagerWrapper(uri, out partName, out isContentFile);
// If the part name was specified as Content at compile time then we will try to load
// the file directly. Otherwise we assume the user is looking for a resource.
if (isContentFile)
{
return new ContentFilePart(this, uri);
}
else
{
// Uri mapps to a resource stream.
// Make sure the resource id is exactly same as the one we used to create Resource
// at compile time.
partName = ResourceIDHelper.GetResourceIDFromRelativePath(partName);
return new ResourcePart(this, uri, partName, rmWrapper);
}
}
#endregion
//------------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
// AppDomain.AssemblyLoad event handler. Check whether the assembly's resourcemanager has
// been added to the cache. If it has, we need to update the cache with the newly loaded dll.
private void OnAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
Assembly assembly = args.LoadedAssembly;
// This is specific for designer (Sparkle) scenario: rebuild and reload dll using Load(Byte[]).
// We do not care about assemblies loaded into the reflection-only context or the Gaced assemblies.
// For example, in Sparkle whenever a project is built all dependent assemblies will be loaded reflection only.
// We do no care about those. Only when a assembly is loaded into the execution context, we will need to update the cache.
if ((! assembly.ReflectionOnly) && (! assembly.GlobalAssemblyCache))
{
AssemblyName assemblyInfo = new AssemblyName(assembly.FullName);
string assemblyName = assemblyInfo.Name.ToLowerInvariant();
string assemblyKey = string.Empty;
string key = assemblyName;
// Check if this newly loaded assembly is in the cache. If so, update the cache.
// If it is not in cache, do not do anything. It will be added on demand.
// The key could be Name, Name + Version, Name + PublicKeyToken, or Name + Version + PublicKeyToken.
// Otherwise, update the cache with the newly loaded dll.
// First check Name.
UpdateCachedRMW(key, args.LoadedAssembly);
string assemblyVersion = assemblyInfo.Version.ToString();
if (!String.IsNullOrEmpty(assemblyVersion))
{
key = key + assemblyVersion;
// Check Name + Version
UpdateCachedRMW(key, args.LoadedAssembly);
}
byte[] reqKeyToken = assemblyInfo.GetPublicKeyToken();
for (int i = 0; i < reqKeyToken.Length; i++)
{
assemblyKey += reqKeyToken[i].ToString("x", NumberFormatInfo.InvariantInfo);
}
if (!String.IsNullOrEmpty(assemblyKey))
{
key = key + assemblyKey;
// Check Name + Version + KeyToken
UpdateCachedRMW(key, args.LoadedAssembly);
key = assemblyName + assemblyKey;
// Check Name + KeyToken
UpdateCachedRMW(key, args.LoadedAssembly);
}
}
}
private void UpdateCachedRMW(string key, Assembly assembly)
{
if (_registeredResourceManagers.ContainsKey(key))
{
// Update the ResourceManagerWrapper with the new assembly.
// Note Package caches Part and Part holds on to ResourceManagerWrapper. Package does not provide a way for
// us to update their cache, so we update the assembly that the ResourceManagerWrapper holds on to. This way the
// Part cached in the Package class can reference the new dll too.
_registeredResourceManagers[key].Assembly = assembly;
}
}
//
// Searches the available ResourceManagerWrapper list for one that matches the given Uri.
// It could be either ResourceManagerWrapper for specific libary assembly or Application
// main assembly. Package enforces that all Uri will be correctly formated.
//
// Assumed to be relative
// The name of the file in the resource manager
// A flag to indicate that this path is a known loose file at compile time
//
private ResourceManagerWrapper GetResourceManagerWrapper(Uri uri, out string partName, out bool isContentFile)
{
string assemblyName;
string assemblyVersion;
string assemblyKey;
ResourceManagerWrapper rmwResult = ApplicationResourceManagerWrapper;
isContentFile = false;
BaseUriHelper.GetAssemblyNameAndPart(uri, out partName, out assemblyName, out assemblyVersion, out assemblyKey);
if (!String.IsNullOrEmpty(assemblyName))
{
string key = assemblyName + assemblyVersion + assemblyKey;
_registeredResourceManagers.TryGetValue(key.ToLowerInvariant(), out rmwResult);
// first time. Add this to the hash table
if (rmwResult == null)
{
Assembly assembly;
assembly = BaseUriHelper.GetLoadedAssembly(assemblyName, assemblyVersion, assemblyKey);
if (assembly.Equals(Application.ResourceAssembly))
{
// This Uri maps to Application Entry assembly even though it has ";component".
rmwResult = ApplicationResourceManagerWrapper;
}
else
{
rmwResult = new ResourceManagerWrapper(assembly);
}
_registeredResourceManagers[key.ToLowerInvariant()] = rmwResult;
}
}
if ((rmwResult == ApplicationResourceManagerWrapper))
{
if (rmwResult != null)
{
// If this is not a resource from a component then it might be
// a content file and not an application resource.
if (ContentFileHelper.IsContentFile(partName))
{
isContentFile = true;
rmwResult = null;
}
}
else
{
// Throw when Application.ResourceAssembly is null.
throw new IOException(SR.Get(SRID.EntryAssemblyIsNull));
}
}
return rmwResult;
}
#endregion
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Members
private static Dictionary _registeredResourceManagers = new Dictionary();
private static ResourceManagerWrapper _applicationResourceManagerWrapper = null;
private static FileShare _fileShare = FileShare.Read;
private static bool assemblyLoadhandlerAttached = false;
#endregion Private Members
//-----------------------------------------------------
//
// Uninteresting (but required) overrides
//
//-----------------------------------------------------
#region Uninteresting (but required) overrides
protected override PackagePart CreatePartCore(Uri uri, string contentType, CompressionOption compressionOption)
{
return null;
}
protected override void DeletePartCore(Uri uri)
{
throw new NotSupportedException();
}
protected override PackagePart[] GetPartsCore()
{
throw new NotSupportedException();
}
protected override void FlushCore()
{
throw new NotSupportedException();
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MetadataSource.cs
- UnsafeNativeMethods.cs
- SourceElementsCollection.cs
- MenuItem.cs
- SchemaImporterExtensionsSection.cs
- BrowserCapabilitiesCompiler.cs
- ParentQuery.cs
- StructureChangedEventArgs.cs
- DataRowChangeEvent.cs
- RenderTargetBitmap.cs
- StatusBarPanelClickEvent.cs
- NavigationExpr.cs
- RegistryPermission.cs
- Pens.cs
- PassportAuthenticationEventArgs.cs
- MessageOperationFormatter.cs
- UrlAuthFailureHandler.cs
- ComponentResourceKeyConverter.cs
- XmlSchemaSimpleTypeRestriction.cs
- DataMemberAttribute.cs
- EmbeddedObject.cs
- Math.cs
- WinInetCache.cs
- CodeMethodInvokeExpression.cs
- WindowsMenu.cs
- TreeNodeCollection.cs
- COSERVERINFO.cs
- GenericTypeParameterConverter.cs
- WebConfigurationHost.cs
- SqlRemoveConstantOrderBy.cs
- StackBuilderSink.cs
- StringArrayConverter.cs
- SqlDataSourceCache.cs
- SqlCachedBuffer.cs
- ListBoxItemAutomationPeer.cs
- EmissiveMaterial.cs
- FastEncoderWindow.cs
- ClientConfigPaths.cs
- DocobjHost.cs
- AssemblyResourceLoader.cs
- Util.cs
- PassportIdentity.cs
- RegionData.cs
- IsolatedStorageException.cs
- GroupPartitionExpr.cs
- TCEAdapterGenerator.cs
- QilPatternVisitor.cs
- ConfigurationException.cs
- WebPartEditorOkVerb.cs
- odbcmetadatacollectionnames.cs
- HScrollBar.cs
- ChooseAction.cs
- SqlMethodCallConverter.cs
- TextDecoration.cs
- SecurityState.cs
- SessionStateUtil.cs
- _LoggingObject.cs
- EntityViewGenerationAttribute.cs
- ErrorFormatter.cs
- CustomServiceCredentials.cs
- Trigger.cs
- SqlColumnizer.cs
- InvalidWMPVersionException.cs
- UTF8Encoding.cs
- DataGridViewHeaderCell.cs
- Vector3D.cs
- SqlGenerator.cs
- UriExt.cs
- PlanCompilerUtil.cs
- JoinSymbol.cs
- ColumnWidthChangedEvent.cs
- Debug.cs
- SimpleHandlerFactory.cs
- GenericTextProperties.cs
- DataGridViewCell.cs
- DataControlFieldHeaderCell.cs
- InkCanvasSelectionAdorner.cs
- Array.cs
- DrawItemEvent.cs
- CommandEventArgs.cs
- BasicCommandTreeVisitor.cs
- MediaCommands.cs
- RuntimeEnvironment.cs
- CollectionContainer.cs
- XmlBinaryWriterSession.cs
- DataRow.cs
- QilTypeChecker.cs
- FormViewModeEventArgs.cs
- AuthorizationRule.cs
- PasswordTextContainer.cs
- CorePropertiesFilter.cs
- DiscoveryEndpointElement.cs
- SqlTriggerAttribute.cs
- ZipIOModeEnforcingStream.cs
- ComponentDispatcherThread.cs
- ProxyFragment.cs
- ProtocolsSection.cs
- ValidationEventArgs.cs
- OperationAbortedException.cs
- CompiledQueryCacheKey.cs