Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / AssemblyContextControlItem.cs / 1305376 / AssemblyContextControlItem.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.Hosting
{
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime;
using System.Diagnostics.CodeAnalysis;
using System.Activities.Presentation.Hosting;
using System.IO;
using System.Linq;
//This class is required by the TypeBrowser - it allows browsing defined types either in VS scenario or in
//rehosted scenario. The types are divided into two categories - types defined in local assembly (i.e. the one
//contained in current project - for that assembly, types are loaded using GetTypes() method), and all other
//referenced types - for them, type list is loaded using GetExportedTypes() method.
//
//if this object is not set in desinger's Items collection or both members are null, the type
//browser will not display "Browse for types" option.
[Fx.Tag.XamlVisible(false)]
public sealed class AssemblyContextControlItem : ContextItem
{
public AssemblyName LocalAssemblyName
{ get; set; }
[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "This is by design")]
public IList ReferencedAssemblyNames
{
get;
set;
}
public override Type ItemType
{
get { return typeof(AssemblyContextControlItem); }
}
public IEnumerable AllAssemblyNamesInContext
{
get
{
if ((LocalAssemblyName != null) && LocalAssemblyName.CodeBase != null && (File.Exists(new Uri(LocalAssemblyName.CodeBase).LocalPath)))
{
yield return LocalAssemblyName.FullName;
}
foreach (AssemblyName assemblyName in GetEnvironmentAssemblyNames())
{
//avoid returning local name twice
if (LocalAssemblyName == null || !assemblyName.FullName.Equals(LocalAssemblyName.FullName, StringComparison.Ordinal))
{
yield return assemblyName.FullName;
}
}
}
}
public IEnumerable GetEnvironmentAssemblyNames()
{
if (this.ReferencedAssemblyNames != null)
{
return this.ReferencedAssemblyNames;
}
else
{
List assemblyNames = new List();
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (!assembly.IsDynamic)
{
assemblyNames.Add(assembly.GetName());
}
}
return assemblyNames;
}
}
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly",
Justification = "Multi-Targeting makes sense")]
public IEnumerable GetEnvironmentAssemblies (IMultiTargetingSupportService multiTargetingService)
{
if (this.ReferencedAssemblyNames == null)
{
return AppDomain.CurrentDomain.GetAssemblies().Where(assembly => !assembly.IsDynamic);
}
else
{
List assemblies = new List();
foreach (AssemblyName assemblyName in this.ReferencedAssemblyNames)
{
Assembly assembly = GetAssembly(assemblyName, multiTargetingService);
if (assembly != null)
{
assemblies.Add(assembly);
}
}
return assemblies;
}
}
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly",
Justification = "Multi-Targeting makes sense")]
public static Assembly GetAssembly(AssemblyName assemblyName, IMultiTargetingSupportService multiTargetingService)
{
Assembly assembly = null;
try
{
if (multiTargetingService != null)
{
assembly = multiTargetingService.GetReflectionAssembly(assemblyName);
}
else
{
assembly = Assembly.Load(assemblyName);
}
}
catch (FileNotFoundException)
{
//this exception may occur if current project is not compiled yet
}
catch (FileLoadException)
{
//the assembly could not be loaded, ignore the error
}
catch (BadImageFormatException)
{
//bad assembly
}
return assembly;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.Hosting
{
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime;
using System.Diagnostics.CodeAnalysis;
using System.Activities.Presentation.Hosting;
using System.IO;
using System.Linq;
//This class is required by the TypeBrowser - it allows browsing defined types either in VS scenario or in
//rehosted scenario. The types are divided into two categories - types defined in local assembly (i.e. the one
//contained in current project - for that assembly, types are loaded using GetTypes() method), and all other
//referenced types - for them, type list is loaded using GetExportedTypes() method.
//
//if this object is not set in desinger's Items collection or both members are null, the type
//browser will not display "Browse for types" option.
[Fx.Tag.XamlVisible(false)]
public sealed class AssemblyContextControlItem : ContextItem
{
public AssemblyName LocalAssemblyName
{ get; set; }
[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "This is by design")]
public IList ReferencedAssemblyNames
{
get;
set;
}
public override Type ItemType
{
get { return typeof(AssemblyContextControlItem); }
}
public IEnumerable AllAssemblyNamesInContext
{
get
{
if ((LocalAssemblyName != null) && LocalAssemblyName.CodeBase != null && (File.Exists(new Uri(LocalAssemblyName.CodeBase).LocalPath)))
{
yield return LocalAssemblyName.FullName;
}
foreach (AssemblyName assemblyName in GetEnvironmentAssemblyNames())
{
//avoid returning local name twice
if (LocalAssemblyName == null || !assemblyName.FullName.Equals(LocalAssemblyName.FullName, StringComparison.Ordinal))
{
yield return assemblyName.FullName;
}
}
}
}
public IEnumerable GetEnvironmentAssemblyNames()
{
if (this.ReferencedAssemblyNames != null)
{
return this.ReferencedAssemblyNames;
}
else
{
List assemblyNames = new List();
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (!assembly.IsDynamic)
{
assemblyNames.Add(assembly.GetName());
}
}
return assemblyNames;
}
}
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly",
Justification = "Multi-Targeting makes sense")]
public IEnumerable GetEnvironmentAssemblies (IMultiTargetingSupportService multiTargetingService)
{
if (this.ReferencedAssemblyNames == null)
{
return AppDomain.CurrentDomain.GetAssemblies().Where(assembly => !assembly.IsDynamic);
}
else
{
List assemblies = new List();
foreach (AssemblyName assemblyName in this.ReferencedAssemblyNames)
{
Assembly assembly = GetAssembly(assemblyName, multiTargetingService);
if (assembly != null)
{
assemblies.Add(assembly);
}
}
return assemblies;
}
}
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly",
Justification = "Multi-Targeting makes sense")]
public static Assembly GetAssembly(AssemblyName assemblyName, IMultiTargetingSupportService multiTargetingService)
{
Assembly assembly = null;
try
{
if (multiTargetingService != null)
{
assembly = multiTargetingService.GetReflectionAssembly(assemblyName);
}
else
{
assembly = Assembly.Load(assemblyName);
}
}
catch (FileNotFoundException)
{
//this exception may occur if current project is not compiled yet
}
catch (FileLoadException)
{
//the assembly could not be loaded, ignore the error
}
catch (BadImageFormatException)
{
//bad assembly
}
return assembly;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlNode.cs
- IntSecurity.cs
- SystemWebExtensionsSectionGroup.cs
- TargetFrameworkUtil.cs
- GridItemCollection.cs
- SpinWait.cs
- CFGGrammar.cs
- DateTimeConverter2.cs
- ScriptComponentDescriptor.cs
- SeparatorAutomationPeer.cs
- BufferModeSettings.cs
- HtmlShimManager.cs
- EndEvent.cs
- XhtmlCssHandler.cs
- RoleManagerSection.cs
- safex509handles.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- GeneralTransform3DTo2D.cs
- OleDbCommandBuilder.cs
- AttributeUsageAttribute.cs
- UriScheme.cs
- HtmlButton.cs
- ConstructorBuilder.cs
- PropertyNames.cs
- XPathNavigatorReader.cs
- NegatedConstant.cs
- PersistenceTypeAttribute.cs
- ColorDialog.cs
- WorkflowRuntimeService.cs
- DrawingContextWalker.cs
- ISAPIApplicationHost.cs
- CategoryNameCollection.cs
- Command.cs
- ContentElementAutomationPeer.cs
- CompressedStack.cs
- ApplicationCommands.cs
- SiteMapDataSourceDesigner.cs
- StaticExtensionConverter.cs
- X509ScopedServiceCertificateElement.cs
- ControlBuilderAttribute.cs
- EventBindingService.cs
- VirtualDirectoryMapping.cs
- XmlSchemaSequence.cs
- SystemIPGlobalStatistics.cs
- XmlNamespaceManager.cs
- XsdDuration.cs
- SpecularMaterial.cs
- GlobalAclOperationRequirement.cs
- EntityCommand.cs
- NameTable.cs
- PathFigure.cs
- DataGridViewComponentPropertyGridSite.cs
- ReferenceCountedObject.cs
- ElementMarkupObject.cs
- PeerToPeerException.cs
- DataGridViewCellStyle.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- TimeSpanMinutesConverter.cs
- DoubleAnimationClockResource.cs
- Version.cs
- ReadOnlyNameValueCollection.cs
- DataColumnChangeEvent.cs
- ActivityValidator.cs
- Win32KeyboardDevice.cs
- StructuredTypeEmitter.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- CodeTypeOfExpression.cs
- AnnotationResourceChangedEventArgs.cs
- RegexInterpreter.cs
- OleDbCommandBuilder.cs
- TaskScheduler.cs
- HostedTransportConfigurationManager.cs
- WebPartCatalogAddVerb.cs
- WindowsListViewScroll.cs
- CellCreator.cs
- XmlSchemaAll.cs
- ResolvedKeyFrameEntry.cs
- OrderByQueryOptionExpression.cs
- HiddenFieldPageStatePersister.cs
- WpfGeneratedKnownProperties.cs
- CompiledAction.cs
- SqlDataSourceDesigner.cs
- updateconfighost.cs
- HostedController.cs
- ResourceSet.cs
- NegotiationTokenProvider.cs
- PerspectiveCamera.cs
- X509Certificate2.cs
- ConfigurationValue.cs
- DoubleConverter.cs
- XXXOnTypeBuilderInstantiation.cs
- FormattedTextSymbols.cs
- PointConverter.cs
- LinqDataSource.cs
- CombinedGeometry.cs
- WebPartDisplayMode.cs
- WinFormsSpinner.cs
- CodeIdentifiers.cs
- HttpServerUtilityWrapper.cs
- MetadataPropertyAttribute.cs