Updates to device factory methodology for use in plugins

This commit is contained in:
Neil Dorin
2020-04-01 14:18:26 -06:00
parent f0010a7625
commit fcc2a5db06
5 changed files with 36 additions and 25 deletions

View File

@@ -13,8 +13,6 @@ using PepperDash.Essentials.Core.Config;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Serves as a generic wrapper class for all styles of IBasicCommuncation ports
/// </summary>
@@ -62,21 +60,19 @@ namespace PepperDash.Essentials.Core
ConfigWriter.UpdateDeviceConfig(config);
}
public class Factory : Essentials.Core.Factory
{
#region IDeviceFactory Members
List<string> TypeNames = new List<string>() { "genericComm" };
#endregion
public override IKeyed BuildDevice(DeviceConfig dc)
{
Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
return new GenericComm(dc);
}
}
}
public class GenericCommFactory : Essentials.Core.EssentialsDeviceFactory<GenericComm>
{
public override EssentialsDevice BuildDevice(DeviceConfig dc)
{
Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
return new GenericComm(dc);
}
public GenericCommFactory()
{
TypeNames = new List<string>() { "genericComm" };
}
}
}

View File

@@ -19,9 +19,18 @@ namespace PepperDash.Essentials.Core
{
}
protected EssentialsDevice(string key, string name)
: base(key, name)
{
}
}
public abstract class Factory : IDeviceFactory
/// <summary>
/// Devices the basic needs for a Device Factory
/// </summary>
public abstract class EssentialsDeviceFactory<T> : IDeviceFactory where T:EssentialsDevice
{
#region IDeviceFactory Members
@@ -35,13 +44,16 @@ namespace PepperDash.Essentials.Core
}
}
public abstract EssentialsDevice BuildDevice(DeviceConfig dc);
#endregion
}
public abstract IKeyed BuildDevice(DeviceConfig dc);
protected Factory()
{
TypeNames = new List<string>();
}
/// <summary>
/// Devices the basic needs for a Device Factory
/// </summary>
public abstract class EssentialsPluginDeviceFactory<T> : EssentialsDeviceFactory<T>, IPluginDeviceFactory where T : EssentialsDevice
{
public string MinimumEssentialsFrameworkVersion { get; protected set; }
}
}

View File

@@ -96,7 +96,7 @@ namespace PepperDash.Essentials.Core
{
public CoreDeviceFactory()
{
var genComm = new GenericComm.Factory() as IDeviceFactory;
var genComm = new GenericCommFactory() as IDeviceFactory;
genComm.LoadTypeFactories();
}
}

View File

@@ -4,6 +4,9 @@ using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using PepperDash.Core;
using PepperDash.Essentials.Core.Config;
namespace PepperDash.Essentials.Core
{
/// <summary>