Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / Microsoft / Win32 / OAVariantLib.cs / 1305376 / 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.Diagnostics.Contracts; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using CultureInfo = System.Globalization.CultureInfo; 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), }; // 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. */ #if FEATURE_COMINTEROP [System.Security.SecurityCritical] // auto-generated 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, ref source, culture.LCID, targetClass.TypeHandle.Value, GetCVTypeFromClass(targetClass), options); return result; } #endif #endregion #region Private Helpers private static int GetCVTypeFromClass(Type ctype) { Contract.Requires(ctype != null); #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
- KoreanLunisolarCalendar.cs
- XmlSchemas.cs
- WebServiceErrorEvent.cs
- ReliableSessionBindingElement.cs
- ReferencedAssembly.cs
- PointLightBase.cs
- DATA_BLOB.cs
- AutomationProperties.cs
- PasswordBox.cs
- Helpers.cs
- CustomAttributeBuilder.cs
- TreeViewItemAutomationPeer.cs
- Rotation3D.cs
- ClientScriptManagerWrapper.cs
- TextElementCollectionHelper.cs
- TemplatingOptionsDialog.cs
- ITextView.cs
- ModelItem.cs
- PngBitmapEncoder.cs
- FuncTypeConverter.cs
- OutArgument.cs
- TextContainer.cs
- UIElement3DAutomationPeer.cs
- GridViewCommandEventArgs.cs
- ThreadAbortException.cs
- VisualStyleElement.cs
- WeakEventManager.cs
- OrthographicCamera.cs
- TraceHandlerErrorFormatter.cs
- OutputCacheProfileCollection.cs
- QuaternionRotation3D.cs
- PrivilegedConfigurationManager.cs
- QueryMath.cs
- ToolStripSeparatorRenderEventArgs.cs
- SynchronizedMessageSource.cs
- XmlValueConverter.cs
- CompilerTypeWithParams.cs
- Peer.cs
- ColumnHeaderConverter.cs
- PixelFormats.cs
- MergeLocalizationDirectives.cs
- MenuItemStyleCollection.cs
- ModelItemDictionaryImpl.cs
- EditableLabelControl.cs
- MediaContextNotificationWindow.cs
- BooleanSwitch.cs
- ZoneMembershipCondition.cs
- LabelDesigner.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- Geometry3D.cs
- FormsAuthenticationEventArgs.cs
- ClientTarget.cs
- TypeUtil.cs
- ContainerControl.cs
- DateTimeOffset.cs
- IntersectQueryOperator.cs
- EnumerationRangeValidationUtil.cs
- KeyEvent.cs
- HttpConfigurationContext.cs
- ContractInstanceProvider.cs
- ProfileManager.cs
- EventMap.cs
- RecordBuilder.cs
- BitConverter.cs
- SendMailErrorEventArgs.cs
- IPGlobalProperties.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- Mapping.cs
- DataGridCheckBoxColumn.cs
- columnmapfactory.cs
- EventLogPermissionAttribute.cs
- AddInAttribute.cs
- SoapElementAttribute.cs
- CompressedStack.cs
- XmlSchemaCompilationSettings.cs
- GridViewColumnHeader.cs
- SqlNode.cs
- TypeHelper.cs
- WebPartEditVerb.cs
- TransformDescriptor.cs
- CoreChannel.cs
- SetterBase.cs
- ExpressionList.cs
- MiniLockedBorderGlyph.cs
- GridViewRow.cs
- HttpResponseHeader.cs
- TreeNodeStyle.cs
- DefaultParameterValueAttribute.cs
- FindProgressChangedEventArgs.cs
- Guid.cs
- Exceptions.cs
- QueryCacheEntry.cs
- XmlSchemaProviderAttribute.cs
- OledbConnectionStringbuilder.cs
- SR.Designer.cs
- Models.cs
- ClientProxyGenerator.cs
- InputBinding.cs
- PersonalizationStateQuery.cs
- AudioException.cs