Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- LinkClickEvent.cs
- IndentedTextWriter.cs
- Config.cs
- DrawingCollection.cs
- manifestimages.cs
- ConfigXmlElement.cs
- TypeSystemProvider.cs
- Point3DValueSerializer.cs
- _NtlmClient.cs
- StatusBarPanelClickEvent.cs
- InstanceData.cs
- CodeStatement.cs
- MetadataUtil.cs
- XmlSignificantWhitespace.cs
- PropertyGrid.cs
- ResXResourceWriter.cs
- EarlyBoundInfo.cs
- InkCanvasFeedbackAdorner.cs
- LoopExpression.cs
- TabControl.cs
- FixedDocumentPaginator.cs
- BaseCAMarshaler.cs
- ComponentConverter.cs
- DataGridViewRowEventArgs.cs
- FileLogRecordStream.cs
- Popup.cs
- DecimalFormatter.cs
- MarginCollapsingState.cs
- ToolStripItem.cs
- SecurityContextSecurityToken.cs
- RenameRuleObjectDialog.Designer.cs
- PropertyTabAttribute.cs
- ListControlDesigner.cs
- DataSourceControlBuilder.cs
- OutputCacheProfile.cs
- HashMembershipCondition.cs
- AnnotationResourceCollection.cs
- SqlNotificationRequest.cs
- SoapSchemaExporter.cs
- SqlMethodAttribute.cs
- InstanceCreationEditor.cs
- ComponentCommands.cs
- StateBag.cs
- HttpModuleCollection.cs
- EntityCommandCompilationException.cs
- DirectoryLocalQuery.cs
- ValidateNames.cs
- ProgressiveCrcCalculatingStream.cs
- MessageDispatch.cs
- SerializableTypeCodeDomSerializer.cs
- ToolTip.cs
- DataGridViewSelectedColumnCollection.cs
- ControlBuilder.cs
- ZipIOModeEnforcingStream.cs
- ArraySubsetEnumerator.cs
- XmlEncodedRawTextWriter.cs
- MissingManifestResourceException.cs
- Padding.cs
- FullTextLine.cs
- ChannelBinding.cs
- ListBindingConverter.cs
- PreviewKeyDownEventArgs.cs
- AdapterDictionary.cs
- MulticastDelegate.cs
- ReachFixedPageSerializerAsync.cs
- AuthenticationServiceManager.cs
- WebDisplayNameAttribute.cs
- CSharpCodeProvider.cs
- StateWorkerRequest.cs
- DataGridDesigner.cs
- ClearCollection.cs
- HttpResponse.cs
- OperationCanceledException.cs
- SettingsPropertyValue.cs
- Bidi.cs
- VirtualDirectoryMappingCollection.cs
- WmlMobileTextWriter.cs
- OdbcException.cs
- FunctionImportMapping.cs
- Localizer.cs
- DESCryptoServiceProvider.cs
- TreeViewItemAutomationPeer.cs
- SqlSelectStatement.cs
- dataprotectionpermission.cs
- RegexRunnerFactory.cs
- SqlColumnizer.cs
- SQLInt16.cs
- CharStorage.cs
- LogReserveAndAppendState.cs
- RestClientProxyHandler.cs
- InfoCardSymmetricAlgorithm.cs
- XmlSchemaExternal.cs
- ColumnWidthChangedEvent.cs
- Stack.cs
- CharEntityEncoderFallback.cs
- BrushConverter.cs
- XslAst.cs
- CompiledQueryCacheKey.cs
- BackgroundFormatInfo.cs
- Compiler.cs