1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Artemis/src/Artemis.Core/Services/WebServer/WebModuleRegistration.cs
2023-01-30 21:00:10 +01:00

33 lines
1.1 KiB
C#

using System;
using EmbedIO;
using DryIoc;
namespace Artemis.Core.Services;
internal class WebModuleRegistration
{
public WebModuleRegistration(PluginFeature feature, Type webModuleType)
{
Feature = feature ?? throw new ArgumentNullException(nameof(feature));
WebModuleType = webModuleType ?? throw new ArgumentNullException(nameof(webModuleType));
}
public WebModuleRegistration(PluginFeature feature, Func<IWebModule> create)
{
Feature = feature ?? throw new ArgumentNullException(nameof(feature));
Create = create ?? throw new ArgumentNullException(nameof(create));
}
public PluginFeature Feature { get; }
public Type? WebModuleType { get; }
public Func<IWebModule>? Create { get; }
public IWebModule CreateInstance()
{
if (Create != null)
return Create();
if (WebModuleType != null)
return (IWebModule) Feature.Plugin.Resolve(WebModuleType);
throw new ArtemisCoreException("WebModuleRegistration doesn't have a create function nor a web module type :(");
}
}