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
- cookiecontainer.cs
- MonthChangedEventArgs.cs
- SqlGenericUtil.cs
- GenericUriParser.cs
- SelectionRange.cs
- HttpResponseHeader.cs
- DelegatingConfigHost.cs
- OperationCanceledException.cs
- ConnectionConsumerAttribute.cs
- TagMapInfo.cs
- VisualTarget.cs
- DataServiceKeyAttribute.cs
- TransformPattern.cs
- UIntPtr.cs
- SecurityAttributeGenerationHelper.cs
- TransformerInfo.cs
- ScrollChrome.cs
- DataRelationPropertyDescriptor.cs
- SortedSet.cs
- DebugViewWriter.cs
- UserControlDocumentDesigner.cs
- TcpClientSocketManager.cs
- ModifierKeysValueSerializer.cs
- Operator.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- WebConfigurationManager.cs
- ImportCatalogPart.cs
- ClientFormsIdentity.cs
- UdpDuplexChannel.cs
- IssuanceLicense.cs
- DocumentAutomationPeer.cs
- CLRBindingWorker.cs
- InkCanvasAutomationPeer.cs
- Delegate.cs
- ZoneIdentityPermission.cs
- PassportAuthenticationModule.cs
- SerializationInfo.cs
- WebPartEventArgs.cs
- WebPartEditorApplyVerb.cs
- ItemChangedEventArgs.cs
- SizeIndependentAnimationStorage.cs
- OutputCacheSettingsSection.cs
- Misc.cs
- mongolianshape.cs
- PersistChildrenAttribute.cs
- StylusPointPropertyId.cs
- TemplateXamlTreeBuilder.cs
- InstanceCreationEditor.cs
- StrongTypingException.cs
- KnowledgeBase.cs
- StringConverter.cs
- ConstraintConverter.cs
- HtmlContainerControl.cs
- DataSetUtil.cs
- SmiEventStream.cs
- ProcessProtocolHandler.cs
- XslCompiledTransform.cs
- SchemaCollectionCompiler.cs
- IdnElement.cs
- NavigatingCancelEventArgs.cs
- DataBinder.cs
- RoutedEventValueSerializer.cs
- ManipulationDeltaEventArgs.cs
- RoutedCommand.cs
- _Rfc2616CacheValidators.cs
- RequiredFieldValidator.cs
- PersonalizableTypeEntry.cs
- dataSvcMapFileLoader.cs
- ImageSource.cs
- DocumentPageTextView.cs
- ColorTransform.cs
- XmlWrappingReader.cs
- SqlRemoveConstantOrderBy.cs
- HttpContextServiceHost.cs
- DrawingGroup.cs
- SafeNativeMethods.cs
- StateDesigner.Helpers.cs
- StyleCollection.cs
- updateconfighost.cs
- PropertyNames.cs
- EventTask.cs
- SQLInt64Storage.cs
- ConfigXmlSignificantWhitespace.cs
- GridViewRowCollection.cs
- SqlInternalConnectionTds.cs
- RuntimeComponentFilter.cs
- ListManagerBindingsCollection.cs
- BitmapMetadataBlob.cs
- IisTraceWebEventProvider.cs
- CombinedGeometry.cs
- MemberAccessException.cs
- filewebrequest.cs
- OutputCacheSettingsSection.cs
- WebBrowserUriTypeConverter.cs
- ResetableIterator.cs
- EditorPart.cs
- NominalTypeEliminator.cs
- PopupControlService.cs
- CompilerGlobalScopeAttribute.cs
- ProjectionPath.cs