Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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 sync 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
- Button.cs
- NetworkCredential.cs
- mediaeventshelper.cs
- RegexFCD.cs
- TableLayoutSettingsTypeConverter.cs
- SettingsPropertyValue.cs
- Listbox.cs
- METAHEADER.cs
- StrongNameUtility.cs
- DbExpressionVisitor.cs
- TextEndOfSegment.cs
- CodeDOMUtility.cs
- XmlDsigSep2000.cs
- EditorZoneBase.cs
- X509ServiceCertificateAuthentication.cs
- Pts.cs
- TypeBinaryExpression.cs
- IIS7WorkerRequest.cs
- ToolboxItemCollection.cs
- RelationshipConstraintValidator.cs
- RelationshipConstraintValidator.cs
- UpdatePanel.cs
- DataObjectSettingDataEventArgs.cs
- DataGridItemEventArgs.cs
- QilPatternFactory.cs
- hebrewshape.cs
- ArgIterator.cs
- DesignerVerbToolStripMenuItem.cs
- RequestTimeoutManager.cs
- httpapplicationstate.cs
- PairComparer.cs
- UpDownEvent.cs
- GiveFeedbackEvent.cs
- DataGridViewSelectedRowCollection.cs
- TableCell.cs
- SamlSecurityToken.cs
- InitializerFacet.cs
- Vector.cs
- DataBoundControlHelper.cs
- GenericsInstances.cs
- InitializeCorrelation.cs
- ApplicationActivator.cs
- IntSecurity.cs
- CommonProperties.cs
- PackageStore.cs
- TextTabProperties.cs
- ColorTransformHelper.cs
- HtmlShimManager.cs
- HandlerWithFactory.cs
- LinqDataSourceDeleteEventArgs.cs
- WebPartTransformerCollection.cs
- AsyncOperationLifetimeManager.cs
- InfiniteTimeSpanConverter.cs
- AppDomainFactory.cs
- AttachedPropertyBrowsableAttribute.cs
- MediaContextNotificationWindow.cs
- CommonProperties.cs
- MsmqIntegrationMessageProperty.cs
- DaylightTime.cs
- SwitchElementsCollection.cs
- ErrorProvider.cs
- LocationReferenceEnvironment.cs
- WebErrorHandler.cs
- WebPartTransformer.cs
- RequestSecurityTokenSerializer.cs
- EastAsianLunisolarCalendar.cs
- StaticExtension.cs
- HtmlHistory.cs
- ArcSegment.cs
- httpstaticobjectscollection.cs
- FixedSOMPage.cs
- WebPartsSection.cs
- SchemaImporterExtensionElement.cs
- Util.cs
- LinkAreaEditor.cs
- UrlUtility.cs
- XmlSchemaObject.cs
- ExpressionBuilder.cs
- OrderByBuilder.cs
- SetStoryboardSpeedRatio.cs
- EmptyStringExpandableObjectConverter.cs
- UserCancellationException.cs
- TreeNode.cs
- AxImporter.cs
- UpdatePanelTrigger.cs
- ScheduleChanges.cs
- UnsafeNativeMethodsTablet.cs
- BitmapMetadataEnumerator.cs
- CaseInsensitiveComparer.cs
- MetabaseServerConfig.cs
- ParentUndoUnit.cs
- FloaterParagraph.cs
- CharKeyFrameCollection.cs
- CrossContextChannel.cs
- PrinterUnitConvert.cs
- X509AsymmetricSecurityKey.cs
- safex509handles.cs
- SwitchAttribute.cs
- UrlParameterWriter.cs
- GeometryModel3D.cs