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
- ObjectHandle.cs
- EpmSourceTree.cs
- WebPartConnectionsDisconnectVerb.cs
- Bitmap.cs
- XmlEncoding.cs
- Latin1Encoding.cs
- AttachInfo.cs
- DataBindEngine.cs
- RadioButtonDesigner.cs
- AnnotationResourceChangedEventArgs.cs
- HtmlTableRow.cs
- TagPrefixCollection.cs
- Expander.cs
- StateMachineWorkflow.cs
- TreeIterator.cs
- NameScope.cs
- SwitchAttribute.cs
- ScrollPatternIdentifiers.cs
- SqlReorderer.cs
- CommentAction.cs
- Command.cs
- IisTraceListener.cs
- DbConnectionPoolCounters.cs
- UrlMappingsModule.cs
- FormCollection.cs
- PeerApplicationLaunchInfo.cs
- InvokeMemberBinder.cs
- PanelStyle.cs
- MultilineStringConverter.cs
- ElementMarkupObject.cs
- ScrollPattern.cs
- OdbcStatementHandle.cs
- CompositeScriptReference.cs
- GridViewSortEventArgs.cs
- DiagnosticsConfiguration.cs
- DictionaryTraceRecord.cs
- shaperfactoryquerycacheentry.cs
- WindowsListBox.cs
- XmlCharCheckingWriter.cs
- Logging.cs
- AttributeAction.cs
- _AutoWebProxyScriptHelper.cs
- SingleAnimationBase.cs
- PerformanceCounter.cs
- SizeAnimation.cs
- HtmlValidationSummaryAdapter.cs
- Stack.cs
- NullRuntimeConfig.cs
- WebPartDescription.cs
- IMembershipProvider.cs
- FullTrustAssembly.cs
- Comparer.cs
- NewArray.cs
- HTTPNotFoundHandler.cs
- AmbientLight.cs
- Setter.cs
- GraphicsContext.cs
- TimeEnumHelper.cs
- SharedUtils.cs
- ColumnProvider.cs
- ControlIdConverter.cs
- ElementAction.cs
- SharedDp.cs
- DelegateSerializationHolder.cs
- Aggregates.cs
- ListBindingHelper.cs
- AspNetSynchronizationContext.cs
- ContainerAction.cs
- StorageTypeMapping.cs
- LostFocusEventManager.cs
- ClientScriptManager.cs
- QueryContext.cs
- UserControlParser.cs
- XamlBrushSerializer.cs
- LiteralTextParser.cs
- CellLabel.cs
- SqlNotificationEventArgs.cs
- ContractReference.cs
- Axis.cs
- BaseParser.cs
- ActivityInterfaces.cs
- ThreadSafeList.cs
- CatalogPartChrome.cs
- Emitter.cs
- DataException.cs
- StylusPointPropertyInfo.cs
- RemotingConfiguration.cs
- GregorianCalendar.cs
- TextBoxLine.cs
- NameObjectCollectionBase.cs
- TypeConverterValueSerializer.cs
- LinkLabel.cs
- QueryCacheManager.cs
- VectorAnimationBase.cs
- objectresult_tresulttype.cs
- Operators.cs
- Matrix3DValueSerializer.cs
- SymLanguageVendor.cs
- _NetRes.cs
- SchemaNotation.cs