1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using Microsoft.Internal;
\r
7 namespace System.ComponentModel.Composition.Primitives
\r
9 internal static class CompositionElementExtensions
\r
12 public static ICompositionElement ToSerializableElement(this ICompositionElement element)
\r
14 return SerializableCompositionElement.FromICompositionElement(element);
\r
17 public static ICompositionElement ToElement(this Export export)
\r
19 // First try the export
\r
20 ICompositionElement element = export as ICompositionElement;
\r
21 if (element != null)
\r
26 // Otherwise, try the definition
\r
27 return ToElement(export.Definition);
\r
30 public static ICompositionElement ToElement(this ExportDefinition definition)
\r
32 return ToElementCore(definition);
\r
35 public static ICompositionElement ToElement(this ImportDefinition definition)
\r
37 return ToElementCore(definition);
\r
40 public static ICompositionElement ToElement(this ComposablePart part)
\r
42 return ToElementCore(part);
\r
45 public static ICompositionElement ToElement(this ComposablePartDefinition definition)
\r
47 return ToElementCore(definition);
\r
50 public static string GetDisplayName(this ComposablePartDefinition definition)
\r
52 return GetDisplayNameCore(definition);
\r
55 public static string GetDisplayName(this ComposablePartCatalog catalog)
\r
57 return GetDisplayNameCore(catalog);
\r
60 private static string GetDisplayNameCore(object value)
\r
62 ICompositionElement element = value as ICompositionElement;
\r
63 if (element != null)
\r
65 return element.DisplayName;
\r
68 return value.ToString();
\r
71 private static ICompositionElement ToElementCore(object value)
\r
73 ICompositionElement element = value as ICompositionElement;
\r
74 if (element != null)
\r
79 return new CompositionElement(value);
\r