Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / Microsoft / Win32 / OAVariantLib.cs / 1 / OAVariantLib.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: OAVariantLib ** ** ** Purpose: This class only exists to provide support for ** implenting IDispatch on managed objects. It is ** used to provide OleAut style coercion rules. ** ** ===========================================================*/ namespace Microsoft.Win32 { using System; using System.Reflection; using System.Runtime.CompilerServices; using CultureInfo = System.Globalization.CultureInfo; using Assert = System.Diagnostics.Assert; internal sealed class OAVariantLib { #region Contants // Constants for VariantChangeType from OleAuto.h public const int NoValueProp = 0x01; public const int AlphaBool = 0x02; public const int NoUserOverride = 0x04; public const int CalendarHijri = 0x08; public const int LocalBool = 0x10; internal static readonly Type [] ClassTypes = { typeof(Empty), typeof(void), typeof(Boolean), typeof(Char), typeof(SByte), typeof(Byte), typeof(Int16), typeof(UInt16), typeof(Int32), typeof(UInt32), typeof(Int64), typeof(UInt64), typeof(Single), typeof(Double), typeof(String), typeof(void), typeof(DateTime), typeof(TimeSpan), typeof(Object), typeof(Decimal), null, // Enums - what do we do here? typeof(Missing), typeof(DBNull), }; // Same hack hack hack - Keep these numbers in sync w/ the above array. private const int CV_OBJECT=0x12; #endregion #region Private Constructor private OAVariantLib() { } #endregion #region Internal Methods /** * Changes a Variant from one type to another, calling the OLE * Automation VariantChangeTypeEx routine. Note the legal types here are * restricted to the subset of what can be legally found in a VB * Variant and the types that CLR supports explicitly in the * CLR Variant class. */ internal static Variant ChangeType(Variant source, Type targetClass, short options, CultureInfo culture) { if (targetClass == null) throw new ArgumentNullException("targetClass"); if (culture == null) throw new ArgumentNullException("culture"); Variant result = new Variant (); ChangeTypeEx(ref result, source, culture.LCID, GetCVTypeFromClass(targetClass), options); return result; } #endregion #region Private Helpers private static int GetCVTypeFromClass(Type ctype) { #if _DEBUG BCLDebug.Assert(ClassTypes[CV_OBJECT] == typeof(Object), "OAVariantLib::ClassTypes[CV_OBJECT] == Object.class"); #endif int cvtype=-1; for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignOnlyAttribute.cs
- XmlArrayAttribute.cs
- StoryFragments.cs
- DocumentViewerAutomationPeer.cs
- FileDialog_Vista.cs
- SubMenuStyle.cs
- ConfigurationValue.cs
- RegexCaptureCollection.cs
- Button.cs
- EFColumnProvider.cs
- QilInvoke.cs
- MethodAccessException.cs
- StylusButtonCollection.cs
- Model3D.cs
- DependencyProperty.cs
- WorkflowRuntimeService.cs
- ChildChangedEventArgs.cs
- ProxyGenerationError.cs
- TypeValidationEventArgs.cs
- ConnectionStringSettings.cs
- XmlCountingReader.cs
- StrongNameIdentityPermission.cs
- EffectiveValueEntry.cs
- IdentityReference.cs
- EditorZoneBase.cs
- DataGridViewDataConnection.cs
- BamlLocalizabilityResolver.cs
- recordstate.cs
- LoadedOrUnloadedOperation.cs
- wgx_sdk_version.cs
- SocketSettings.cs
- ObjectStorage.cs
- DesignerEditorPartChrome.cs
- ChtmlTextWriter.cs
- WebPart.cs
- WebPartRestoreVerb.cs
- HyperLinkDataBindingHandler.cs
- InvalidProgramException.cs
- ValueQuery.cs
- SubqueryTrackingVisitor.cs
- IIS7WorkerRequest.cs
- WorkflowElementDialog.cs
- IdentitySection.cs
- PointCollection.cs
- AsymmetricSecurityBindingElement.cs
- PackageRelationshipCollection.cs
- ConnectionManagementSection.cs
- Int32.cs
- CssClassPropertyAttribute.cs
- HtmlInputReset.cs
- RegexNode.cs
- XamlReader.cs
- OleDbConnectionFactory.cs
- HttpCapabilitiesEvaluator.cs
- VerticalAlignConverter.cs
- TemplateKey.cs
- DbConnectionStringCommon.cs
- XmlProcessingInstruction.cs
- XmlSignatureManifest.cs
- StaticContext.cs
- TransferRequestHandler.cs
- ThemeInfoAttribute.cs
- ViewManagerAttribute.cs
- Hex.cs
- MobileUITypeEditor.cs
- SqlDataSourceFilteringEventArgs.cs
- WebPartMenuStyle.cs
- DataServiceQueryProvider.cs
- ListViewSortEventArgs.cs
- Table.cs
- Visitors.cs
- StylusPlugInCollection.cs
- EmptyElement.cs
- NamedPipeWorkerProcess.cs
- TreeNodeCollection.cs
- TransactionManager.cs
- SingleQueryOperator.cs
- TabletCollection.cs
- ClientProxyGenerator.cs
- METAHEADER.cs
- ResourceDescriptionAttribute.cs
- ContainsRowNumberChecker.cs
- FormatterConverter.cs
- ControlCollection.cs
- WorkflowRuntimeServiceElementCollection.cs
- TextEmbeddedObject.cs
- TransformerTypeCollection.cs
- DataGridViewRowPostPaintEventArgs.cs
- Figure.cs
- DeviceContext2.cs
- ConfigurationSection.cs
- XmlSchemaAnnotated.cs
- ApplicationFileParser.cs
- SerializationAttributes.cs
- InstallerTypeAttribute.cs
- RootNamespaceAttribute.cs
- FormView.cs
- ModelFactory.cs
- SqlConnectionManager.cs
- SvcMapFileSerializer.cs