Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / Serialization / ExpressionTable.cs / 1 / ExpressionTable.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.ComponentModel.Design.Serialization {
using Microsoft.CSharp;
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.Diagnostics;
using System.IO;
///
/// An expression table allows a lookup from expression to object and object to
/// expression. It is similar to the serialization manager's GetName and GetInstance
/// methods, only with rich code expressions.
///
internal sealed class ExpressionTable {
private Hashtable _expressions;
private Hashtable Expressions {
get {
if (_expressions == null) {
_expressions = new Hashtable(new ReferenceComparer());
}
return _expressions;
}
}
internal void SetExpression(object value, CodeExpression expression, bool isPreset) {
Expressions[value] = new ExpressionInfo(expression, isPreset);
}
internal CodeExpression GetExpression(object value) {
CodeExpression expression = null;
ExpressionInfo info = Expressions[value] as ExpressionInfo;
if (info != null) {
expression = info.Expression;
}
return expression;
}
internal bool ContainsPresetExpression(object value) {
ExpressionInfo info = Expressions[value] as ExpressionInfo;
if (info != null) {
return info.IsPreset;
}
else {
return false;
}
}
private class ExpressionInfo {
CodeExpression _expression;
bool _isPreset;
internal ExpressionInfo(CodeExpression expression, bool isPreset) {
_expression = expression;
_isPreset = isPreset;
}
internal CodeExpression Expression {
get {
return _expression;
}
}
internal bool IsPreset {
get {
return _isPreset;
}
}
}
private class ReferenceComparer : IEqualityComparer {
bool IEqualityComparer.Equals(object x, object y) {
return object.ReferenceEquals(x, y);
}
int IEqualityComparer.GetHashCode(object x) {
if (x != null) {
return x.GetHashCode();
}
return 0;
}
}
}
}
// 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
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ByteStack.cs
- InlineObject.cs
- ProcessModelInfo.cs
- ContextStaticAttribute.cs
- Track.cs
- GPPOINTF.cs
- OracleConnectionFactory.cs
- CqlIdentifiers.cs
- MSG.cs
- ClaimTypes.cs
- PasswordBox.cs
- MatrixUtil.cs
- SettingsPropertyIsReadOnlyException.cs
- HttpDictionary.cs
- KnownAssembliesSet.cs
- BaseTemplateParser.cs
- QueryValue.cs
- DataListCommandEventArgs.cs
- ChangesetResponse.cs
- WebBrowser.cs
- WindowsTooltip.cs
- LineServicesCallbacks.cs
- MessagePropertyFilter.cs
- DefaultMemberAttribute.cs
- PeerName.cs
- MsmqIntegrationElement.cs
- HyperLinkStyle.cs
- Guid.cs
- CodeGen.cs
- SoapRpcServiceAttribute.cs
- UnhandledExceptionEventArgs.cs
- PathGeometry.cs
- Separator.cs
- GradientStopCollection.cs
- PropertyIDSet.cs
- WebPart.cs
- StylusButtonCollection.cs
- NativeMethods.cs
- SetMemberBinder.cs
- StrokeCollection2.cs
- ThreadExceptionDialog.cs
- BamlMapTable.cs
- DependencyPropertyDescriptor.cs
- PolyBezierSegment.cs
- SeparatorAutomationPeer.cs
- TraceListeners.cs
- MatrixUtil.cs
- PolicyDesigner.cs
- DelegatingConfigHost.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- CategoryAttribute.cs
- ComEventsSink.cs
- Visual3D.cs
- XmlSchemaRedefine.cs
- DataSourceIDConverter.cs
- ReferenceSchema.cs
- ExclusiveTcpListener.cs
- NotSupportedException.cs
- TreeViewAutomationPeer.cs
- ColorAnimation.cs
- ShadowGlyph.cs
- SiteMap.cs
- WsatServiceAddress.cs
- ControlPaint.cs
- DllNotFoundException.cs
- HostedNamedPipeTransportManager.cs
- TypeSystem.cs
- Glyph.cs
- FutureFactory.cs
- Error.cs
- InkCanvas.cs
- PermissionRequestEvidence.cs
- RangeContentEnumerator.cs
- AudioDeviceOut.cs
- SystemEvents.cs
- _LocalDataStore.cs
- CodeDOMUtility.cs
- Console.cs
- ColorBlend.cs
- FormViewUpdatedEventArgs.cs
- recordstatefactory.cs
- BeginEvent.cs
- DBAsyncResult.cs
- MemberJoinTreeNode.cs
- StrokeNode.cs
- SerializationHelper.cs
- WebPartCatalogAddVerb.cs
- DataGridViewComponentPropertyGridSite.cs
- NeutralResourcesLanguageAttribute.cs
- TypeExtensions.cs
- FileEnumerator.cs
- DiscoveryClientChannelFactory.cs
- SafeReadContext.cs
- BezierSegment.cs
- SafeHandles.cs
- ActivityExecutionFilter.cs
- DataTableClearEvent.cs
- XamlWriter.cs
- CustomPopupPlacement.cs