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
- DesigntimeLicenseContext.cs
- TypeConstant.cs
- Serializer.cs
- Mapping.cs
- HttpBrowserCapabilitiesWrapper.cs
- CancelEventArgs.cs
- METAHEADER.cs
- AssemblyFilter.cs
- WindowHideOrCloseTracker.cs
- NonParentingControl.cs
- BulletChrome.cs
- SessionStateItemCollection.cs
- GlobalEventManager.cs
- DesigntimeLicenseContextSerializer.cs
- FocusManager.cs
- SchemaCollectionPreprocessor.cs
- WebColorConverter.cs
- ECDsa.cs
- WorkingDirectoryEditor.cs
- ProtocolsSection.cs
- SecurityUtils.cs
- ParameterModifier.cs
- EntityDataSourceColumn.cs
- ProcessThread.cs
- NeutralResourcesLanguageAttribute.cs
- CompensationToken.cs
- ModelPerspective.cs
- DynamicPropertyHolder.cs
- TriState.cs
- XamlPointCollectionSerializer.cs
- RegisteredScript.cs
- InteropEnvironment.cs
- RegexFCD.cs
- Rfc4050KeyFormatter.cs
- DisplayMemberTemplateSelector.cs
- BitmapEffectDrawing.cs
- ImageMapEventArgs.cs
- FirstMatchCodeGroup.cs
- StyleSheet.cs
- MeshGeometry3D.cs
- HttpVersion.cs
- MsmqBindingElementBase.cs
- FilteredReadOnlyMetadataCollection.cs
- TCPListener.cs
- AsyncCodeActivity.cs
- DistributedTransactionPermission.cs
- RenderData.cs
- XPathMultyIterator.cs
- CellRelation.cs
- PrivacyNoticeBindingElement.cs
- EntityContainerEmitter.cs
- FilteredReadOnlyMetadataCollection.cs
- CharacterShapingProperties.cs
- WebSysDefaultValueAttribute.cs
- DocComment.cs
- LambdaExpression.cs
- InfoCardSymmetricAlgorithm.cs
- FixedPageAutomationPeer.cs
- CodeRegionDirective.cs
- PerformanceCounterLib.cs
- AttributeQuery.cs
- ElementMarkupObject.cs
- OdbcError.cs
- ReadOnlyDictionary.cs
- ObfuscationAttribute.cs
- RelationshipEnd.cs
- RadioButton.cs
- Pkcs9Attribute.cs
- DataTableReaderListener.cs
- ArrangedElement.cs
- BindableAttribute.cs
- AuthorizationRuleCollection.cs
- PrintDialog.cs
- ImageButton.cs
- RegexInterpreter.cs
- ImportOptions.cs
- ContainerControl.cs
- MetaTable.cs
- SamlAuthorityBinding.cs
- EntryPointNotFoundException.cs
- ComponentResourceKeyConverter.cs
- GestureRecognizer.cs
- HostingEnvironmentSection.cs
- EmptyStringExpandableObjectConverter.cs
- FigureParagraph.cs
- DiagnosticSection.cs
- PlacementWorkspace.cs
- DbConnectionInternal.cs
- Emitter.cs
- SqlBinder.cs
- ToolStripSplitButton.cs
- SystemSounds.cs
- GridViewCommandEventArgs.cs
- EllipseGeometry.cs
- DataGridViewColumnStateChangedEventArgs.cs
- TailCallAnalyzer.cs
- DoubleLinkListEnumerator.cs
- CookielessHelper.cs
- IssuanceTokenProviderBase.cs
- TagMapInfo.cs