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
- UserControlParser.cs
- TransportBindingElementImporter.cs
- ServicePrincipalNameElement.cs
- Quack.cs
- GenericEnumConverter.cs
- CryptoStream.cs
- GZipStream.cs
- ActivityUtilities.cs
- Accessors.cs
- XD.cs
- ReceiveParametersContent.cs
- WebPartDisplayModeCollection.cs
- EvidenceTypeDescriptor.cs
- CustomTypeDescriptor.cs
- XmlNamespaceManager.cs
- ModelPerspective.cs
- NameTable.cs
- exports.cs
- SqlNode.cs
- SmiEventSink_Default.cs
- WebServicesSection.cs
- SimpleTextLine.cs
- ISAPIWorkerRequest.cs
- ActivityExecutor.cs
- TableCell.cs
- AffineTransform3D.cs
- UnmanagedMemoryStreamWrapper.cs
- DummyDataSource.cs
- DeploymentSection.cs
- IfJoinedCondition.cs
- PrintingPermission.cs
- StrongNameUtility.cs
- CompoundFileStreamReference.cs
- ValueUtilsSmi.cs
- PositiveTimeSpanValidatorAttribute.cs
- AuthenticationManager.cs
- DetailsViewPagerRow.cs
- PrePrepareMethodAttribute.cs
- DocumentViewerAutomationPeer.cs
- XPathDocumentIterator.cs
- DodSequenceMerge.cs
- wgx_commands.cs
- ImmutableAssemblyCacheEntry.cs
- SchemaTypeEmitter.cs
- PropertyFilterAttribute.cs
- InstanceDescriptor.cs
- InvokeHandlers.cs
- TextBox.cs
- DecimalKeyFrameCollection.cs
- _IPv4Address.cs
- UnknownBitmapDecoder.cs
- ListViewItemCollectionEditor.cs
- QueueProcessor.cs
- Executor.cs
- PropertyTabAttribute.cs
- UnmanagedMemoryStream.cs
- TraceContextRecord.cs
- UnsafeNativeMethods.cs
- HotSpot.cs
- MSG.cs
- COM2ICategorizePropertiesHandler.cs
- ProjectionAnalyzer.cs
- MemberHolder.cs
- LogWriteRestartAreaState.cs
- DateTimeFormatInfo.cs
- StrokeCollectionConverter.cs
- ApplicationInterop.cs
- TimelineClockCollection.cs
- CodeDirectoryCompiler.cs
- MergeFilterQuery.cs
- ViewGenResults.cs
- KeyNotFoundException.cs
- BoolExpression.cs
- AssemblyAssociatedContentFileAttribute.cs
- invalidudtexception.cs
- JapaneseCalendar.cs
- ToolStripArrowRenderEventArgs.cs
- StringValidator.cs
- DataListItem.cs
- WebUtility.cs
- FrameworkElement.cs
- CodeBlockBuilder.cs
- _ListenerRequestStream.cs
- EdmConstants.cs
- XmlHierarchyData.cs
- UncommonField.cs
- PointCollection.cs
- PinnedBufferMemoryStream.cs
- ChtmlTextWriter.cs
- SimpleTypeResolver.cs
- CompiledAction.cs
- XmlUtil.cs
- SqlWriter.cs
- ChannelDispatcherCollection.cs
- WebException.cs
- Win32Interop.cs
- ZipIOLocalFileBlock.cs
- SqlProcedureAttribute.cs
- TypefaceMap.cs
- Annotation.cs