mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 04:34:56 +00:00
New device loading methodology working via reflection
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharp.CrestronIO;
|
||||
using Crestron.SimplSharpPro;
|
||||
using Crestron.SimplSharp.Reflection;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
@@ -18,26 +19,30 @@ namespace PepperDash.Essentials
|
||||
/// Responsible for loading all of the device types for this library
|
||||
/// </summary>
|
||||
public class DeviceFactory
|
||||
{
|
||||
{
|
||||
|
||||
public DeviceFactory()
|
||||
{
|
||||
var ampFactory = new AmplifierFactory() as IDeviceFactory;
|
||||
ampFactory.LoadTypeFactories();
|
||||
var assy = Assembly.GetExecutingAssembly();
|
||||
PluginLoader.SetEssentialsAssembly(assy.GetName().Name, assy);
|
||||
|
||||
var mockDisplayFactory = new MockDisplayFactory() as IDeviceFactory;
|
||||
mockDisplayFactory.LoadTypeFactories();
|
||||
var types = assy.GetTypes().Where(ct => typeof(IDeviceFactory).IsAssignableFrom(ct) && !ct.IsInterface && !ct.IsAbstract);
|
||||
|
||||
var consoleCommMockFactroy = new ConsoleCommMockDeviceFactory() as IDeviceFactory;
|
||||
consoleCommMockFactroy.LoadTypeFactories();
|
||||
|
||||
var mcSystemControllerFactory = new MobileControlSystemControllerFactory() as IDeviceFactory;
|
||||
mcSystemControllerFactory.LoadTypeFactories();
|
||||
|
||||
var mcSIMPLRoomBridgeFactory = new MobileControlSIMPLRoomBridgeFactory() as IDeviceFactory;
|
||||
mcSIMPLRoomBridgeFactory.LoadTypeFactories();
|
||||
|
||||
var roomOnToDefSourceWhenOcc = new RoomOnToDefaultSourceWhenOccupiedFactory() as IDeviceFactory;
|
||||
roomOnToDefSourceWhenOcc.LoadTypeFactories();
|
||||
if (types != null)
|
||||
{
|
||||
foreach (var type in types)
|
||||
{
|
||||
try
|
||||
{
|
||||
var factory = (IDeviceFactory)Crestron.SimplSharp.Reflection.Activator.CreateInstance(type);
|
||||
factory.LoadTypeFactories();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Console(0, Debug.ErrorLogLevel.Error, "Unable to load type: '{1}' DeviceFactory: {0}", e, type.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user