Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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 [....] 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
- StandardCommands.cs
- XhtmlBasicLinkAdapter.cs
- DetailsViewInsertedEventArgs.cs
- ConsoleKeyInfo.cs
- ShapingWorkspace.cs
- DataServices.cs
- TextBoxBase.cs
- X509Certificate2.cs
- COM2Enum.cs
- ObjectDataSourceFilteringEventArgs.cs
- Common.cs
- MdiWindowListItemConverter.cs
- MessageLogger.cs
- QuaternionConverter.cs
- PackageRelationshipCollection.cs
- AlignmentXValidation.cs
- MessagePropertyFilter.cs
- WindowsTreeView.cs
- HotCommands.cs
- ExceptionValidationRule.cs
- Collection.cs
- DLinqAssociationProvider.cs
- OracleEncoding.cs
- PropertyValueUIItem.cs
- Cloud.cs
- DNS.cs
- EntityStoreSchemaFilterEntry.cs
- BridgeDataRecord.cs
- PropertyMetadata.cs
- CatalogZoneBase.cs
- BoolLiteral.cs
- GridViewCellAutomationPeer.cs
- ObjectDataSourceFilteringEventArgs.cs
- AnnotationObservableCollection.cs
- ItemsPresenter.cs
- PersonalizationEntry.cs
- CompilerGlobalScopeAttribute.cs
- IPAddress.cs
- DataPagerFieldCommandEventArgs.cs
- sitestring.cs
- ApplyTemplatesAction.cs
- OrderedDictionaryStateHelper.cs
- QueryInterceptorAttribute.cs
- PropertyPathConverter.cs
- XmlWriterSettings.cs
- InputScopeConverter.cs
- DynamicFilter.cs
- Timer.cs
- TemplatedAdorner.cs
- IgnorePropertiesAttribute.cs
- CodeTryCatchFinallyStatement.cs
- RtfControls.cs
- Vector3DAnimation.cs
- NavigatingCancelEventArgs.cs
- NonParentingControl.cs
- Assembly.cs
- RedistVersionInfo.cs
- NamedPipeProcessProtocolHandler.cs
- PostBackTrigger.cs
- ToolStripPanelRow.cs
- IndicShape.cs
- Memoizer.cs
- Logging.cs
- PriorityBinding.cs
- GACMembershipCondition.cs
- InkCanvasSelectionAdorner.cs
- NavigatingCancelEventArgs.cs
- BezierSegment.cs
- MatrixAnimationUsingKeyFrames.cs
- ValidationEventArgs.cs
- BitmapEffectGroup.cs
- AutoGeneratedField.cs
- SelectionEditingBehavior.cs
- PtsHelper.cs
- MemberNameValidator.cs
- ContextMenuService.cs
- XmlSchemaComplexContentRestriction.cs
- NonSerializedAttribute.cs
- TableSectionStyle.cs
- ClientSession.cs
- HtmlForm.cs
- SHA384.cs
- DataGridViewTextBoxCell.cs
- StylusCaptureWithinProperty.cs
- PropertyValidationContext.cs
- SqlDataSourceConfigureSelectPanel.cs
- QueryCursorEventArgs.cs
- TextTreeInsertElementUndoUnit.cs
- Properties.cs
- AlphabetConverter.cs
- SynthesizerStateChangedEventArgs.cs
- CreateUserWizard.cs
- LicenseContext.cs
- StateRuntime.cs
- PerformanceCounterCategory.cs
- MergeExecutor.cs
- Vector3DKeyFrameCollection.cs
- Rect3D.cs
- XmlEnumAttribute.cs
- Color.cs