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
- RadioButtonAutomationPeer.cs
- _TimerThread.cs
- SrgsElementList.cs
- DLinqColumnProvider.cs
- ActivityInfo.cs
- ApplicationServicesHostFactory.cs
- EqualityComparer.cs
- PeerApplication.cs
- Crypto.cs
- WSTrustDec2005.cs
- EventLog.cs
- Point.cs
- UserPreferenceChangingEventArgs.cs
- Soap.cs
- AstNode.cs
- ApplicationFileParser.cs
- LineServicesCallbacks.cs
- XmlSchemaAttribute.cs
- SqlBulkCopyColumnMapping.cs
- NullableDoubleMinMaxAggregationOperator.cs
- DocumentPageView.cs
- PresentationAppDomainManager.cs
- PropertyManager.cs
- RuntimeConfigLKG.cs
- LayoutUtils.cs
- Scripts.cs
- SmtpReplyReader.cs
- GeneralTransformGroup.cs
- HyperLinkField.cs
- FlowLayoutPanel.cs
- ScriptResourceInfo.cs
- CompositeDataBoundControl.cs
- TextTreeInsertUndoUnit.cs
- EventLogPermission.cs
- RadioButtonFlatAdapter.cs
- RuntimeIdentifierPropertyAttribute.cs
- MD5.cs
- StrongNameUtility.cs
- Variant.cs
- Rect3D.cs
- FixedFindEngine.cs
- XmlSchemaSimpleContentRestriction.cs
- WSDualHttpSecurity.cs
- ProviderConnectionPointCollection.cs
- WindowsFormsSectionHandler.cs
- WebPartPersonalization.cs
- _SslStream.cs
- TabletDeviceInfo.cs
- DataRow.cs
- StatusStrip.cs
- AsymmetricSecurityBindingElement.cs
- PointLight.cs
- DetailsView.cs
- MonthCalendar.cs
- ToolStrip.cs
- ControlParameter.cs
- BaseServiceProvider.cs
- ScrollBar.cs
- SqlComparer.cs
- DrawingGroupDrawingContext.cs
- SRDisplayNameAttribute.cs
- TcpActivation.cs
- Point3DCollection.cs
- DataGridViewColumnHeaderCell.cs
- ProtectedConfiguration.cs
- IPEndPoint.cs
- XmlDocumentViewSchema.cs
- EntityContainerRelationshipSet.cs
- ZipArchive.cs
- XmlException.cs
- ZipIOExtraFieldElement.cs
- RangeValuePattern.cs
- Image.cs
- CustomActivityDesigner.cs
- OracleParameterCollection.cs
- WindowsFormsLinkLabel.cs
- ColumnMapTranslator.cs
- TextOnlyOutput.cs
- XmlSerializer.cs
- XPathDocumentNavigator.cs
- PeerTransportListenAddressConverter.cs
- ListViewInsertionMark.cs
- ProcessInputEventArgs.cs
- Persist.cs
- SqlStream.cs
- SelectionService.cs
- IdentityManager.cs
- TextEditorContextMenu.cs
- WebReference.cs
- InputManager.cs
- ManagedFilter.cs
- securitymgrsite.cs
- MemberListBinding.cs
- SQLBinary.cs
- TCEAdapterGenerator.cs
- AsyncPostBackTrigger.cs
- AnalyzedTree.cs
- BinaryObjectWriter.cs
- HttpGetServerProtocol.cs
- DataObjectCopyingEventArgs.cs