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
- DataGridColumn.cs
- ReadWriteSpinLock.cs
- ToggleProviderWrapper.cs
- ToolboxItemFilterAttribute.cs
- EntityViewContainer.cs
- PointHitTestParameters.cs
- ConnectionPoolManager.cs
- TransformDescriptor.cs
- NodeFunctions.cs
- SqlCommand.cs
- TemplateBindingExpressionConverter.cs
- Evaluator.cs
- DesignerHelpers.cs
- ADConnectionHelper.cs
- WebPartEditVerb.cs
- ChangeToolStripParentVerb.cs
- PermissionRequestEvidence.cs
- Attributes.cs
- DrawListViewColumnHeaderEventArgs.cs
- ExpressionBinding.cs
- DataGridViewSelectedCellCollection.cs
- TypeConstant.cs
- EdgeProfileValidation.cs
- TreeChangeInfo.cs
- BulletChrome.cs
- DesignerResources.cs
- SrgsGrammar.cs
- MobileComponentEditorPage.cs
- DataSetFieldSchema.cs
- ComponentChangingEvent.cs
- QueryContext.cs
- XmlBufferReader.cs
- SequentialUshortCollection.cs
- MarkupCompilePass2.cs
- ResourcesGenerator.cs
- TreeViewCancelEvent.cs
- OverflowException.cs
- RegexWorker.cs
- TypeDependencyAttribute.cs
- X509ChainPolicy.cs
- DiagnosticTrace.cs
- TextStore.cs
- BitmapEncoder.cs
- MachineKeyConverter.cs
- WithParamAction.cs
- _CookieModule.cs
- SyndicationDeserializer.cs
- MachineKeySection.cs
- NavigationEventArgs.cs
- SpecularMaterial.cs
- DataGridViewCellStyleConverter.cs
- CodeBinaryOperatorExpression.cs
- AspNetSynchronizationContext.cs
- AlternationConverter.cs
- FormatterConverter.cs
- GridViewSelectEventArgs.cs
- HandlerFactoryCache.cs
- LoginDesigner.cs
- TargetInvocationException.cs
- DependentList.cs
- LineBreak.cs
- TTSEngineTypes.cs
- XpsFilter.cs
- ListViewGroup.cs
- XPathSelfQuery.cs
- MDIWindowDialog.cs
- Expr.cs
- ConnectionStringSettingsCollection.cs
- IncrementalCompileAnalyzer.cs
- StringWriter.cs
- Model3DGroup.cs
- DateTimeOffsetStorage.cs
- TiffBitmapDecoder.cs
- TableChangeProcessor.cs
- UnsafeNativeMethods.cs
- DataGridTableStyleMappingNameEditor.cs
- TogglePatternIdentifiers.cs
- HashMembershipCondition.cs
- EncryptedData.cs
- SqlDataSourceQuery.cs
- _emptywebproxy.cs
- AnnotationObservableCollection.cs
- OpenFileDialog.cs
- WorkflowEventArgs.cs
- Configuration.cs
- ConstructorNeedsTagAttribute.cs
- StrokeCollectionConverter.cs
- ZipIOLocalFileDataDescriptor.cs
- OdbcParameterCollection.cs
- XmlWhitespace.cs
- IDReferencePropertyAttribute.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DataGridViewColumnEventArgs.cs
- TableParaClient.cs
- CreateDataSourceDialog.cs
- _SSPISessionCache.cs
- PartialToken.cs
- OrderingExpression.cs
- DocumentAutomationPeer.cs
- GenericIdentity.cs