Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- RadioButton.cs
- Descriptor.cs
- CodeSubDirectory.cs
- AtomServiceDocumentSerializer.cs
- WebPartsSection.cs
- GuidConverter.cs
- PrincipalPermission.cs
- ListViewItem.cs
- TemplatedControlDesigner.cs
- ClientConfigurationSystem.cs
- OleDbDataReader.cs
- SqlIdentifier.cs
- GacUtil.cs
- AnnotationDocumentPaginator.cs
- ScrollChangedEventArgs.cs
- SplitContainer.cs
- TransferMode.cs
- TextBoxBase.cs
- VolatileEnlistmentState.cs
- DataGridAutoFormat.cs
- ToolStripDropDownButton.cs
- CallbackCorrelationInitializer.cs
- JobInputBins.cs
- SemanticKeyElement.cs
- HttpCacheVary.cs
- RegexNode.cs
- ChtmlTextWriter.cs
- ProcessingInstructionAction.cs
- LongMinMaxAggregationOperator.cs
- X509Chain.cs
- XmlSchemaResource.cs
- SubclassTypeValidator.cs
- DataSet.cs
- DWriteFactory.cs
- GenericUriParser.cs
- ClientOperationFormatterProvider.cs
- Subtree.cs
- GraphicsContext.cs
- CultureMapper.cs
- MetadataCache.cs
- XmlKeywords.cs
- SamlSecurityTokenAuthenticator.cs
- Menu.cs
- ThreadExceptionEvent.cs
- ValueConversionAttribute.cs
- HashCodeCombiner.cs
- EntityContainerRelationshipSetEnd.cs
- FormViewPageEventArgs.cs
- Animatable.cs
- PageParser.cs
- ReadOnlyDataSource.cs
- VideoDrawing.cs
- XPathItem.cs
- SqlParameterCollection.cs
- StatusBar.cs
- TableParagraph.cs
- CustomErrorsSectionWrapper.cs
- CapabilitiesAssignment.cs
- SmiXetterAccessMap.cs
- IsolatedStorageFile.cs
- IndentedTextWriter.cs
- Cursor.cs
- BuildResult.cs
- Monitor.cs
- TextBoxAutomationPeer.cs
- TableHeaderCell.cs
- AnnotationObservableCollection.cs
- PriorityChain.cs
- HttpRawResponse.cs
- LinkButton.cs
- HwndSourceKeyboardInputSite.cs
- ConstraintEnumerator.cs
- ImageEditor.cs
- InvalidOperationException.cs
- ExpressionBuilderCollection.cs
- StringInfo.cs
- MailAddress.cs
- SeparatorAutomationPeer.cs
- CallbackValidator.cs
- ListView.cs
- VoiceSynthesis.cs
- CodeSnippetTypeMember.cs
- XmlDocumentViewSchema.cs
- Schema.cs
- EdmItemError.cs
- StaticFileHandler.cs
- PrimitiveType.cs
- ValueExpressions.cs
- TextSelection.cs
- ButtonBase.cs
- KnownColorTable.cs
- ContentControl.cs
- HtmlInputPassword.cs
- RequestCachingSection.cs
- PropertyBuilder.cs
- BitmapEffectrendercontext.cs
- RuleSetBrowserDialog.cs
- KnownTypesHelper.cs
- SchemaManager.cs
- InputQueue.cs