Code:
/ 4.0 / 4.0 / 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
- TextTreeTextBlock.cs
- ToolStripItemTextRenderEventArgs.cs
- DynamicActivityXamlReader.cs
- KeyInstance.cs
- InputBinding.cs
- BaseDataListPage.cs
- SoapEnumAttribute.cs
- OperationPickerDialog.designer.cs
- ObjectSecurity.cs
- AppDomainUnloadedException.cs
- PropertyNames.cs
- RepeaterItemCollection.cs
- RoleBoolean.cs
- DocumentPaginator.cs
- RelationshipDetailsRow.cs
- _CacheStreams.cs
- ReliableInputConnection.cs
- ImageConverter.cs
- PersonalizationStateInfoCollection.cs
- TreeViewDataItemAutomationPeer.cs
- WebPartConnectionsCloseVerb.cs
- WCFServiceClientProxyGenerator.cs
- XmlSchema.cs
- VideoDrawing.cs
- ToolStripDropDownButton.cs
- RelatedCurrencyManager.cs
- NetworkInterface.cs
- XmlByteStreamWriter.cs
- Rotation3DAnimation.cs
- ContextBase.cs
- ObjectAnimationBase.cs
- PageContentCollection.cs
- SupportsEventValidationAttribute.cs
- HuffModule.cs
- XmlMemberMapping.cs
- RuntimeVariablesExpression.cs
- CssStyleCollection.cs
- PointCollection.cs
- SymbolEqualComparer.cs
- WebRequestModuleElement.cs
- DefaultTextStoreTextComposition.cs
- GridView.cs
- SystemIPInterfaceStatistics.cs
- EmulateRecognizeCompletedEventArgs.cs
- WorkflowDesignerMessageFilter.cs
- RadioButtonList.cs
- XamlBuildProvider.cs
- Geometry3D.cs
- StatusBarDrawItemEvent.cs
- ApplicationInfo.cs
- WebServiceParameterData.cs
- MetafileHeaderWmf.cs
- FormsIdentity.cs
- SimpleHandlerFactory.cs
- OperationResponse.cs
- WebPartZone.cs
- DefinitionUpdate.cs
- SHA256.cs
- ServiceOperationInvoker.cs
- InfoCardKeyedHashAlgorithm.cs
- PageAsyncTaskManager.cs
- ListenDesigner.cs
- ResizeGrip.cs
- PeerCredentialElement.cs
- TransportSecurityProtocol.cs
- ActivityExecutor.cs
- XhtmlBasicFormAdapter.cs
- SrgsElementFactoryCompiler.cs
- UmAlQuraCalendar.cs
- WindowsStartMenu.cs
- Misc.cs
- WindowsFont.cs
- NotifyParentPropertyAttribute.cs
- NativeMethods.cs
- ProxyElement.cs
- ToggleButtonAutomationPeer.cs
- DataContractJsonSerializer.cs
- XmlSubtreeReader.cs
- ToolStripItemImageRenderEventArgs.cs
- XmlSchemaParticle.cs
- MappingItemCollection.cs
- DrawListViewColumnHeaderEventArgs.cs
- HandlerFactoryCache.cs
- ZeroOpNode.cs
- Win32.cs
- ConnectionManagementSection.cs
- UmAlQuraCalendar.cs
- TextViewSelectionProcessor.cs
- DbConnectionStringBuilder.cs
- DispatcherObject.cs
- DocumentReference.cs
- DynamicValueConverter.cs
- DefaultSection.cs
- DbConnectionPoolOptions.cs
- DataGridViewRow.cs
- X509Utils.cs
- MenuCommandsChangedEventArgs.cs
- TypeRestriction.cs
- MdiWindowListStrip.cs
- WebGetAttribute.cs