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
- Window.cs
- EllipseGeometry.cs
- InputLanguageProfileNotifySink.cs
- SignedInfo.cs
- CredentialCache.cs
- PointLightBase.cs
- sqlser.cs
- ProofTokenCryptoHandle.cs
- SecurityMode.cs
- ELinqQueryState.cs
- SerializationException.cs
- COM2FontConverter.cs
- RefType.cs
- VariableModifiersHelper.cs
- DisplayMemberTemplateSelector.cs
- MaxSessionCountExceededException.cs
- LinqDataSourceContextEventArgs.cs
- MarkupExtensionParser.cs
- IERequestCache.cs
- QuaternionAnimationUsingKeyFrames.cs
- OuterGlowBitmapEffect.cs
- ToolStripSeparatorRenderEventArgs.cs
- Transactions.cs
- RadioButtonStandardAdapter.cs
- WrappedIUnknown.cs
- PanelDesigner.cs
- TextComposition.cs
- IdnMapping.cs
- ProfileModule.cs
- NumberFormatInfo.cs
- WebPartEditVerb.cs
- IMembershipProvider.cs
- PageBuildProvider.cs
- TabletCollection.cs
- Msec.cs
- SchemaNamespaceManager.cs
- BoolExpressionVisitors.cs
- KeyToListMap.cs
- SqlRecordBuffer.cs
- SmiTypedGetterSetter.cs
- CodeRegionDirective.cs
- GacUtil.cs
- PackageFilter.cs
- SiteMapDataSourceDesigner.cs
- Site.cs
- __Filters.cs
- XmlBaseReader.cs
- MenuStrip.cs
- figurelength.cs
- TreeNodeCollection.cs
- ToolStripStatusLabel.cs
- FormsAuthentication.cs
- TextDpi.cs
- CapiNative.cs
- SaveFileDialog.cs
- SmiEventSink.cs
- MinimizableAttributeTypeConverter.cs
- ContextStaticAttribute.cs
- CacheAxisQuery.cs
- InfoCardSchemas.cs
- AsymmetricKeyExchangeDeformatter.cs
- MatchingStyle.cs
- FlowDocumentScrollViewer.cs
- SystemIPv6InterfaceProperties.cs
- FullTextBreakpoint.cs
- Zone.cs
- NonParentingControl.cs
- DetailsViewDeleteEventArgs.cs
- DetailsViewUpdatedEventArgs.cs
- ModuleBuilder.cs
- SerializerProvider.cs
- DeferrableContentConverter.cs
- SqlTypesSchemaImporter.cs
- RIPEMD160Managed.cs
- ImageIndexConverter.cs
- NonValidatingSecurityTokenAuthenticator.cs
- FusionWrap.cs
- WrappedReader.cs
- TextureBrush.cs
- HandlerFactoryWrapper.cs
- DataException.cs
- ClientEventManager.cs
- XPathNodeIterator.cs
- XmlElementList.cs
- UnionQueryOperator.cs
- EventHandlerService.cs
- HttpMethodConstraint.cs
- X509Certificate.cs
- ToolStripDropDownClosingEventArgs.cs
- MultiSelector.cs
- ApplicationBuildProvider.cs
- CodeVariableReferenceExpression.cs
- WebProxyScriptElement.cs
- SectionInput.cs
- WbemException.cs
- TextTreeExtractElementUndoUnit.cs
- OleDbSchemaGuid.cs
- Set.cs
- SubclassTypeValidatorAttribute.cs
- ControlCollection.cs