aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Extensibility/ExtensionData.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Extensibility/ExtensionData.cs')
-rw-r--r--src/WixToolset.Extensibility/ExtensionData.cs75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/WixToolset.Extensibility/ExtensionData.cs b/src/WixToolset.Extensibility/ExtensionData.cs
new file mode 100644
index 00000000..4cf262b9
--- /dev/null
+++ b/src/WixToolset.Extensibility/ExtensionData.cs
@@ -0,0 +1,75 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Extensibility
4{
5 using System;
6 using System.IO;
7 using System.Reflection;
8 using System.Xml;
9 using WixToolset.Data;
10
11 public abstract class ExtensionData : IExtensionData
12 {
13 /// <summary>
14 /// Gets the optional table definitions for this extension.
15 /// </summary>
16 /// <value>Table definisions for this extension or null if there are no table definitions.</value>
17 public virtual TableDefinitionCollection TableDefinitions
18 {
19 get { return null; }
20 }
21
22 /// <summary>
23 /// Gets the optional default culture.
24 /// </summary>
25 /// <value>The optional default culture.</value>
26 public virtual string DefaultCulture
27 {
28 get { return null; }
29 }
30
31 /// <summary>
32 /// Gets the optional library associated with this extension.
33 /// </summary>
34 /// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
35 /// <returns>The library for this extension or null if there is no library.</returns>
36 public virtual Library GetLibrary(TableDefinitionCollection tableDefinitions)
37 {
38 return null;
39 }
40
41 /// <summary>
42 /// Help for loading a library from an embedded resource.
43 /// </summary>
44 /// <param name="assembly">The assembly containing the embedded resource.</param>
45 /// <param name="resourceName">The name of the embedded resource being requested.</param>
46 /// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
47 /// <returns>The loaded library.</returns>
48 protected static Library LoadLibraryHelper(Assembly assembly, string resourceName, TableDefinitionCollection tableDefinitions)
49 {
50 using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
51 {
52 UriBuilder uriBuilder = new UriBuilder(assembly.CodeBase);
53 uriBuilder.Scheme = "embeddedresource";
54 uriBuilder.Fragment = resourceName;
55
56 return Library.Load(resourceStream, uriBuilder.Uri, tableDefinitions, false);
57 }
58 }
59
60 /// <summary>
61 /// Helper for loading table definitions from an embedded resource.
62 /// </summary>
63 /// <param name="assembly">The assembly containing the embedded resource.</param>
64 /// <param name="resourceName">The name of the embedded resource being requested.</param>
65 /// <returns>The loaded table definitions.</returns>
66 protected static TableDefinitionCollection LoadTableDefinitionHelper(Assembly assembly, string resourceName)
67 {
68 using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
69 using (XmlReader reader = XmlReader.Create(resourceStream))
70 {
71 return TableDefinitionCollection.Load(reader);
72 }
73 }
74 }
75}