Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / Baml2006 / WpfSharedXamlSchemaContext.cs / 1305600 / WpfSharedXamlSchemaContext.cs
using System; using System.Collections.Generic; using System.Text; using System.Xaml; namespace System.Windows.Baml2006 { ////// This schema context is shared between all the WPF XAML loads in an AppDomain, including both /// full and partial trust callers. To be safe for sharing, it must be idempotent and order-independent. /// See the SecurityNote on XamlSchemaContext for more details. /// internal class WpfSharedXamlSchemaContext : WpfSharedBamlSchemaContext { // V3 Rules are: // Simple Collection rules: We only lookup IList & IDictionary (no add methods) (The MarkupCompiler doesn't support this) // No Deferring Loader lookup on XamlMember (The MarkupCompiler doesn't support this) public WpfSharedXamlSchemaContext(XamlSchemaContextSettings settings, bool useV3Rules) : base(settings) { _useV3Rules = useV3Rules; } public override XamlType GetXamlType(Type type) { if (type == null) { throw new ArgumentNullException("type"); } XamlType xType; lock (_syncObject) { if (!_masterTypeTable.TryGetValue(type, out xType)) { RequireRuntimeType(type); xType = CreateKnownBamlType(type.Name, false, _useV3Rules); if (xType == null || xType.UnderlyingType != type) { xType = new WpfXamlType(type, this, false /* isBamlType */, _useV3Rules); } _masterTypeTable.Add(type, xType); } } return xType; } internal static void RequireRuntimeType(Type type) { // To avoid injection of derived System.Types that lie about their identity // (and spoof other types), only allow RuntimeTypes. // S.W.M.XamlReader only supports live reflection, anyway. Type runtimeType = typeof(object).GetType(); if (!runtimeType.IsAssignableFrom(type.GetType())) { throw new ArgumentException(SR.Get(SRID.RuntimeTypeRequired, type), "type"); } } // Allow wrapping SchemaContexts a way to call into the protected overload of GetXamlType internal XamlType GetXamlTypeInternal(string xamlNamespace, string name, params XamlType[] typeArguments) { return base.GetXamlType(xamlNamespace, name, typeArguments); } private Dictionary_masterTypeTable = new Dictionary (); private object _syncObject = new Object(); private bool _useV3Rules; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; using System.Xaml; namespace System.Windows.Baml2006 { /// /// This schema context is shared between all the WPF XAML loads in an AppDomain, including both /// full and partial trust callers. To be safe for sharing, it must be idempotent and order-independent. /// See the SecurityNote on XamlSchemaContext for more details. /// internal class WpfSharedXamlSchemaContext : WpfSharedBamlSchemaContext { // V3 Rules are: // Simple Collection rules: We only lookup IList & IDictionary (no add methods) (The MarkupCompiler doesn't support this) // No Deferring Loader lookup on XamlMember (The MarkupCompiler doesn't support this) public WpfSharedXamlSchemaContext(XamlSchemaContextSettings settings, bool useV3Rules) : base(settings) { _useV3Rules = useV3Rules; } public override XamlType GetXamlType(Type type) { if (type == null) { throw new ArgumentNullException("type"); } XamlType xType; lock (_syncObject) { if (!_masterTypeTable.TryGetValue(type, out xType)) { RequireRuntimeType(type); xType = CreateKnownBamlType(type.Name, false, _useV3Rules); if (xType == null || xType.UnderlyingType != type) { xType = new WpfXamlType(type, this, false /* isBamlType */, _useV3Rules); } _masterTypeTable.Add(type, xType); } } return xType; } internal static void RequireRuntimeType(Type type) { // To avoid injection of derived System.Types that lie about their identity // (and spoof other types), only allow RuntimeTypes. // S.W.M.XamlReader only supports live reflection, anyway. Type runtimeType = typeof(object).GetType(); if (!runtimeType.IsAssignableFrom(type.GetType())) { throw new ArgumentException(SR.Get(SRID.RuntimeTypeRequired, type), "type"); } } // Allow wrapping SchemaContexts a way to call into the protected overload of GetXamlType internal XamlType GetXamlTypeInternal(string xamlNamespace, string name, params XamlType[] typeArguments) { return base.GetXamlType(xamlNamespace, name, typeArguments); } private Dictionary_masterTypeTable = new Dictionary (); private object _syncObject = new Object(); private bool _useV3Rules; } } // 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
- TextCompositionEventArgs.cs
- CompositionTarget.cs
- ProxyManager.cs
- CompositeCollection.cs
- WorkflowInstanceQuery.cs
- NativeMethodsOther.cs
- RemotingAttributes.cs
- ConfigPathUtility.cs
- HtmlHead.cs
- WebHeaderCollection.cs
- SessionStateSection.cs
- SqlReferenceCollection.cs
- SelectedPathEditor.cs
- MetadataItemSerializer.cs
- AddInProcess.cs
- BuildResult.cs
- DocumentSequence.cs
- InternalTypeHelper.cs
- SemaphoreFullException.cs
- Stacktrace.cs
- DataTableCollection.cs
- Parameter.cs
- ComponentResourceKey.cs
- SizeConverter.cs
- DataSourceProvider.cs
- CollectionViewGroup.cs
- IdnElement.cs
- TextChange.cs
- ViewGenerator.cs
- BitmapCacheBrush.cs
- ToolStripSettings.cs
- EncodingFallbackAwareXmlTextWriter.cs
- Hex.cs
- DocumentDesigner.cs
- DesignerForm.cs
- StandardOleMarshalObject.cs
- Msmq4SubqueuePoisonHandler.cs
- QueryPageSettingsEventArgs.cs
- JsonReader.cs
- JsonSerializer.cs
- StaticFileHandler.cs
- UIElementCollection.cs
- TypeGeneratedEventArgs.cs
- ScriptReference.cs
- DriveInfo.cs
- SchemaHelper.cs
- WinOEToolBoxItem.cs
- WebPartMenuStyle.cs
- QilSortKey.cs
- SpecialNameAttribute.cs
- QilUnary.cs
- ImagingCache.cs
- DefaultParameterValueAttribute.cs
- VisualBrush.cs
- storepermissionattribute.cs
- RelationshipEndCollection.cs
- SystemIcmpV6Statistics.cs
- WebConfigurationHost.cs
- CommandBinding.cs
- ImageDrawing.cs
- mda.cs
- StreamInfo.cs
- Camera.cs
- BindingNavigator.cs
- DataPagerFieldCollection.cs
- Win32.cs
- Dictionary.cs
- ContentTypeSettingClientMessageFormatter.cs
- HwndMouseInputProvider.cs
- ColorTransformHelper.cs
- ProfileGroupSettingsCollection.cs
- DependentList.cs
- Quaternion.cs
- Pipe.cs
- PasswordRecovery.cs
- DesignerDataView.cs
- HtmlInputSubmit.cs
- StagingAreaInputItem.cs
- StreamResourceInfo.cs
- Line.cs
- BuildResultCache.cs
- SevenBitStream.cs
- PhonemeEventArgs.cs
- ClientSettingsStore.cs
- DetailsViewPageEventArgs.cs
- ByteBufferPool.cs
- ControlBuilderAttribute.cs
- DbConnectionPoolGroupProviderInfo.cs
- PopupControlService.cs
- ChannelTracker.cs
- SmtpFailedRecipientException.cs
- SizeConverter.cs
- BulletedListEventArgs.cs
- SqlDataSourceStatusEventArgs.cs
- FacetDescription.cs
- RemoteWebConfigurationHost.cs
- TripleDES.cs
- SQLBytes.cs
- SchemaElementLookUpTable.cs
- DataList.cs