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
- CodeArrayCreateExpression.cs
- UriSection.cs
- GraphicsContext.cs
- Number.cs
- TransformGroup.cs
- TimeSpanOrInfiniteConverter.cs
- Geometry3D.cs
- Int64Animation.cs
- ListViewItemMouseHoverEvent.cs
- WorkflowMessageEventArgs.cs
- NavigationProgressEventArgs.cs
- EnumConverter.cs
- FormViewUpdateEventArgs.cs
- MemberProjectionIndex.cs
- BinaryReader.cs
- ReflectionHelper.cs
- Int32AnimationUsingKeyFrames.cs
- TableItemProviderWrapper.cs
- WorkflowApplicationCompletedEventArgs.cs
- IResourceProvider.cs
- DeferredSelectedIndexReference.cs
- WasHttpModulesInstallComponent.cs
- DataGridColumnStyleMappingNameEditor.cs
- BamlLocalizableResource.cs
- MorphHelper.cs
- ComponentDispatcherThread.cs
- ColumnCollection.cs
- SiteMembershipCondition.cs
- CommandPlan.cs
- ReadOnlyDictionary.cs
- VScrollProperties.cs
- WebPartCatalogAddVerb.cs
- COM2TypeInfoProcessor.cs
- StdRegProviderWrapper.cs
- WindowsGraphicsCacheManager.cs
- ScrollPattern.cs
- TextSerializer.cs
- Screen.cs
- DocumentEventArgs.cs
- ScriptingWebServicesSectionGroup.cs
- ListViewGroup.cs
- GetMemberBinder.cs
- RegexFCD.cs
- ParserStreamGeometryContext.cs
- LoadMessageLogger.cs
- DynamicILGenerator.cs
- CheckBoxPopupAdapter.cs
- QilFactory.cs
- EditorResources.cs
- CheckBox.cs
- _ContextAwareResult.cs
- DataGridBeginningEditEventArgs.cs
- Viewport2DVisual3D.cs
- TextEndOfSegment.cs
- SerializationException.cs
- ValueChangedEventManager.cs
- WebPartCloseVerb.cs
- WebPartVerbCollection.cs
- Int16AnimationUsingKeyFrames.cs
- DateTimeSerializationSection.cs
- HtmlTableCellCollection.cs
- GroupByExpressionRewriter.cs
- iisPickupDirectory.cs
- DiscoveryClientRequestChannel.cs
- ParseElementCollection.cs
- NestPullup.cs
- XsltArgumentList.cs
- Literal.cs
- VirtualDirectoryMapping.cs
- XmlKeywords.cs
- ValueTypeFixupInfo.cs
- WebBrowserNavigatedEventHandler.cs
- FilterUserControlBase.cs
- HashCodeCombiner.cs
- DataGridTablesFactory.cs
- SqlConnectionStringBuilder.cs
- GroupBoxAutomationPeer.cs
- ZipIOLocalFileBlock.cs
- DataServiceSaveChangesEventArgs.cs
- XmlSchemaParticle.cs
- TextFormatterHost.cs
- FormatControl.cs
- StorageScalarPropertyMapping.cs
- XmlDataCollection.cs
- RenamedEventArgs.cs
- ConnectionStringEditor.cs
- StructuralCache.cs
- rsa.cs
- FontSourceCollection.cs
- XPathNodeList.cs
- SQLBytes.cs
- DataSourceDescriptorCollection.cs
- VirtualPathData.cs
- HashRepartitionStream.cs
- AsyncPostBackErrorEventArgs.cs
- TextEditorContextMenu.cs
- ToolBarPanel.cs
- RawKeyboardInputReport.cs
- LineServicesCallbacks.cs
- PersonalizationDictionary.cs