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
- _UriTypeConverter.cs
- ToolStripDropDownClosedEventArgs.cs
- Byte.cs
- ImageListUtils.cs
- DatePickerAutomationPeer.cs
- IOException.cs
- FontStretchConverter.cs
- CharConverter.cs
- ListViewCancelEventArgs.cs
- WindowPattern.cs
- VariantWrapper.cs
- HelpEvent.cs
- Sentence.cs
- ComponentGlyph.cs
- Debugger.cs
- EdmPropertyAttribute.cs
- Pkcs7Signer.cs
- SqlMultiplexer.cs
- ListComponentEditorPage.cs
- AnnotationObservableCollection.cs
- DiscreteKeyFrames.cs
- SimpleHandlerBuildProvider.cs
- DBSqlParserTable.cs
- InvalidEnumArgumentException.cs
- ForeignKeyFactory.cs
- AttributeAction.cs
- EntityTypeEmitter.cs
- SqlMethodCallConverter.cs
- ColumnPropertiesGroup.cs
- BaseServiceProvider.cs
- RoleManagerModule.cs
- FixedSOMGroup.cs
- DecoderFallbackWithFailureFlag.cs
- objectquery_tresulttype.cs
- AutomationPeer.cs
- AttributeCollection.cs
- XmlArrayItemAttributes.cs
- AnnotationHighlightLayer.cs
- HtmlElementErrorEventArgs.cs
- DeferredElementTreeState.cs
- EventHandlersStore.cs
- Version.cs
- CompiledRegexRunnerFactory.cs
- DbProviderServices.cs
- SequentialOutput.cs
- BitmapInitialize.cs
- GeneratedCodeAttribute.cs
- XmlSigningNodeWriter.cs
- ReadWriteSpinLock.cs
- ModelItemImpl.cs
- ColumnResizeUndoUnit.cs
- BindingElementCollection.cs
- ConstNode.cs
- EntitySetBase.cs
- ConfigurationSectionCollection.cs
- NumericUpDownAcceleration.cs
- DebuggerAttributes.cs
- CompiledAction.cs
- DataServiceQueryProvider.cs
- ActivityStatusChangeEventArgs.cs
- DelegatedStream.cs
- ButtonBaseAutomationPeer.cs
- DBAsyncResult.cs
- ServiceOperationWrapper.cs
- MemoryFailPoint.cs
- TransactionFlowBindingElement.cs
- TraceRecord.cs
- SystemSounds.cs
- Keywords.cs
- dtdvalidator.cs
- DataObjectMethodAttribute.cs
- WhileDesigner.xaml.cs
- XmlCustomFormatter.cs
- OdbcConnectionHandle.cs
- PriorityBinding.cs
- XPathNodePointer.cs
- DictionaryEntry.cs
- SqlStream.cs
- ByeMessage11.cs
- CssStyleCollection.cs
- AttributeEmitter.cs
- XhtmlTextWriter.cs
- Gdiplus.cs
- StorageEntitySetMapping.cs
- TypeContext.cs
- XmlSchemaObjectCollection.cs
- ProcessThread.cs
- PropertyConverter.cs
- QueryContinueDragEvent.cs
- ErrorStyle.cs
- Parallel.cs
- DescriptionAttribute.cs
- DataGridTableCollection.cs
- RegexStringValidatorAttribute.cs
- MemoryStream.cs
- QilName.cs
- WinInetCache.cs
- PictureBox.cs
- ColumnResult.cs
- BaseCollection.cs