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
- WebPartZoneCollection.cs
- WebUtil.cs
- SqlComparer.cs
- DebugInfo.cs
- TemplatePropertyEntry.cs
- XmlUTF8TextReader.cs
- GraphicsPath.cs
- SecurityException.cs
- CodeChecksumPragma.cs
- DataTableReader.cs
- StorageTypeMapping.cs
- AuthenticationServiceManager.cs
- UIElement3DAutomationPeer.cs
- DataServiceKeyAttribute.cs
- RunInstallerAttribute.cs
- ToolStripProgressBar.cs
- Iis7Helper.cs
- DLinqDataModelProvider.cs
- MetadataItem.cs
- Calendar.cs
- HtmlPhoneCallAdapter.cs
- AppDomainInstanceProvider.cs
- IgnoreFlushAndCloseStream.cs
- MetadataSerializer.cs
- CmsInterop.cs
- LogManagementAsyncResult.cs
- ComponentEditorForm.cs
- PersonalizablePropertyEntry.cs
- ConditionBrowserDialog.cs
- HtmlForm.cs
- TypefaceCollection.cs
- SchemaTableColumn.cs
- ArrangedElement.cs
- FixedBufferAttribute.cs
- DependencyPropertyChangedEventArgs.cs
- ArithmeticLiteral.cs
- WebChannelFactory.cs
- SafePEFileHandle.cs
- ImageIndexConverter.cs
- DnsEndPoint.cs
- DiscoveryClientDocuments.cs
- BitmapEffectInputConnector.cs
- SqlLiftWhereClauses.cs
- UriTemplateClientFormatter.cs
- PeerNeighborManager.cs
- QuadraticBezierSegment.cs
- AppSettingsSection.cs
- Crc32Helper.cs
- WindowsStatusBar.cs
- Typeface.cs
- WebPartEditVerb.cs
- ErrorWebPart.cs
- SystemDiagnosticsSection.cs
- MessageHeaderDescription.cs
- PropertyInfoSet.cs
- WebPartsSection.cs
- DataControlFieldHeaderCell.cs
- WebGetAttribute.cs
- LiteralControl.cs
- ListSortDescription.cs
- PermissionRequestEvidence.cs
- ControlLocalizer.cs
- DataSourceProvider.cs
- DateTimeFormatInfoScanner.cs
- MimeAnyImporter.cs
- SqlProvider.cs
- Drawing.cs
- FormViewActionList.cs
- KeyedCollection.cs
- AddToCollection.cs
- InvalidEnumArgumentException.cs
- RoutedCommand.cs
- DataGridViewTextBoxCell.cs
- DefaultProxySection.cs
- Parsers.cs
- ValueExpressions.cs
- Message.cs
- ListViewDeletedEventArgs.cs
- XMLSchema.cs
- AutoResetEvent.cs
- ParameterCollection.cs
- DBPropSet.cs
- Color.cs
- VSWCFServiceContractGenerator.cs
- AutoGeneratedField.cs
- PeerContact.cs
- SystemEvents.cs
- SafeLibraryHandle.cs
- XmlDocumentFragment.cs
- PlacementWorkspace.cs
- Vector3DCollectionValueSerializer.cs
- WindowsGrip.cs
- SafeHandle.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- IntellisenseTextBox.designer.cs
- NamespaceEmitter.cs
- SiteMembershipCondition.cs
- WorkflowValidationFailedException.cs
- FilterQueryOptionExpression.cs
- Pen.cs