Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- HttpContextServiceHost.cs
- KeySplineConverter.cs
- NullableLongAverageAggregationOperator.cs
- PathStreamGeometryContext.cs
- OdbcInfoMessageEvent.cs
- OletxEnlistment.cs
- OdbcDataReader.cs
- SystemPens.cs
- DataControlButton.cs
- StringValidatorAttribute.cs
- RawStylusInput.cs
- HttpFileCollection.cs
- RuntimeHandles.cs
- InvalidWMPVersionException.cs
- AudienceUriMode.cs
- GridViewAutomationPeer.cs
- TextContainerChangedEventArgs.cs
- UxThemeWrapper.cs
- MetadataFile.cs
- dsa.cs
- TextServicesManager.cs
- XmlNullResolver.cs
- TextAction.cs
- FormClosedEvent.cs
- WindowsListViewSubItem.cs
- MessagePartProtectionMode.cs
- WebPartConnectionsCloseVerb.cs
- PrintDialog.cs
- PairComparer.cs
- SQLStringStorage.cs
- AddValidationError.cs
- WindowsStartMenu.cs
- ActivityFunc.cs
- Control.cs
- Comparer.cs
- FixedPageProcessor.cs
- DetailsViewInsertedEventArgs.cs
- GradientBrush.cs
- StringFreezingAttribute.cs
- documentsequencetextview.cs
- EventWaitHandleSecurity.cs
- AttributeQuery.cs
- OdbcUtils.cs
- CodeTypeOfExpression.cs
- SqlMethodAttribute.cs
- CommandConverter.cs
- figurelengthconverter.cs
- DashStyle.cs
- OledbConnectionStringbuilder.cs
- ServiceObjectContainer.cs
- QuestionEventArgs.cs
- ByteStreamGeometryContext.cs
- ToolStripContentPanel.cs
- SafeCryptContextHandle.cs
- TriggerActionCollection.cs
- TypedTableHandler.cs
- ChangeBlockUndoRecord.cs
- Focus.cs
- CollectionViewGroup.cs
- jithelpers.cs
- Command.cs
- TaskFileService.cs
- QilReference.cs
- XamlFxTrace.cs
- PageCopyCount.cs
- NetworkInformationPermission.cs
- counter.cs
- EventLogHandle.cs
- DataGridViewCellStyleConverter.cs
- Listbox.cs
- StringAnimationUsingKeyFrames.cs
- ResourceDescriptionAttribute.cs
- BindingMemberInfo.cs
- WorkflowDesignerColors.cs
- Attributes.cs
- AssemblyAttributesGoHere.cs
- UpdateExpressionVisitor.cs
- HitTestDrawingContextWalker.cs
- ValidatingCollection.cs
- PropertyGridCommands.cs
- InkSerializer.cs
- WebPartDisplayModeEventArgs.cs
- Propagator.JoinPropagator.cs
- CollectionDataContract.cs
- WebPartMovingEventArgs.cs
- UIElementPropertyUndoUnit.cs
- SqlCommand.cs
- SpeechRecognizer.cs
- DeviceFilterEditorDialog.cs
- DisposableCollectionWrapper.cs
- MemberExpression.cs
- Point.cs
- BrowserDefinitionCollection.cs
- HyperlinkAutomationPeer.cs
- DynamicResourceExtensionConverter.cs
- ScriptingWebServicesSectionGroup.cs
- MouseDevice.cs
- TextBoxLine.cs
- SortedList.cs
- _FtpControlStream.cs