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
- Models.cs
- XmlEncodedRawTextWriter.cs
- Dictionary.cs
- MenuItemStyle.cs
- Visitor.cs
- TextWriter.cs
- WsatServiceCertificate.cs
- ManagedFilter.cs
- SqlTriggerContext.cs
- XmlSchemaProviderAttribute.cs
- ExtensionFile.cs
- CloudCollection.cs
- newinstructionaction.cs
- InstancePersistence.cs
- PropertyPushdownHelper.cs
- DataGridItemCollection.cs
- ProfileProvider.cs
- BackStopAuthenticationModule.cs
- HuffmanTree.cs
- BamlMapTable.cs
- TableHeaderCell.cs
- ActionFrame.cs
- PixelFormatConverter.cs
- IListConverters.cs
- ConfigurationSchemaErrors.cs
- DataContractSerializer.cs
- SystemParameters.cs
- _CommandStream.cs
- SqlDependencyUtils.cs
- XmlArrayItemAttributes.cs
- TargetConverter.cs
- StringConcat.cs
- CompilerResults.cs
- VisualTreeHelper.cs
- ConfigurationProviderException.cs
- TemplateControlCodeDomTreeGenerator.cs
- TextTreeTextNode.cs
- Expr.cs
- CultureSpecificStringDictionary.cs
- FileDialog.cs
- SessionParameter.cs
- FloaterParagraph.cs
- Models.cs
- TypeInfo.cs
- ProtocolsConfigurationHandler.cs
- TempFiles.cs
- SubpageParagraph.cs
- XmlUtil.cs
- CompressEmulationStream.cs
- DataGridViewCellFormattingEventArgs.cs
- XmlConvert.cs
- InheritanceService.cs
- PersonalizableTypeEntry.cs
- DataGridCellAutomationPeer.cs
- BrushValueSerializer.cs
- PassportPrincipal.cs
- dsa.cs
- ExpandButtonVisibilityConverter.cs
- PtsCache.cs
- Walker.cs
- ObjectQueryProvider.cs
- PropertyMap.cs
- TimeSpanConverter.cs
- PrintPageEvent.cs
- Keywords.cs
- MediaPlayer.cs
- CryptoApi.cs
- AmbientValueAttribute.cs
- AccessibilityApplicationManager.cs
- SpellerHighlightLayer.cs
- DataListComponentEditor.cs
- AffineTransform3D.cs
- ClipboardProcessor.cs
- AdRotator.cs
- CodeChecksumPragma.cs
- filewebrequest.cs
- CodeDelegateInvokeExpression.cs
- PeerResolverMode.cs
- TreeNodeStyleCollectionEditor.cs
- RectangleConverter.cs
- ThreadNeutralSemaphore.cs
- TransformProviderWrapper.cs
- CancelEventArgs.cs
- DataRowCollection.cs
- HMACMD5.cs
- DataGridViewCellStyleChangedEventArgs.cs
- CodeDirectiveCollection.cs
- LogEntrySerializer.cs
- ValueTable.cs
- FunctionDetailsReader.cs
- ExpressionReplacer.cs
- Cloud.cs
- PageParserFilter.cs
- XmlTextAttribute.cs
- SerialReceived.cs
- DataContractJsonSerializer.cs
- SettingsPropertyIsReadOnlyException.cs
- ProxyWebPart.cs
- UIElement.cs
- HttpDictionary.cs