feat: Replaces Crestron.SimplSharp.Reflection with System.Reflextion and updates the way essentials plugin versions are stored and retrieved

This commit is contained in:
Neil Dorin
2024-05-23 14:11:42 -06:00
parent 621d848418
commit 0a2aaa693f
24 changed files with 100 additions and 89 deletions

View File

@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.Reflection;
using System.Reflection;
using Newtonsoft.Json;
using PepperDash.Core;
@@ -63,7 +63,7 @@ namespace PepperDash.Essentials.Core
action.Params = new object[0];
}
CType t = obj.GetType();
Type t = obj.GetType();
try
{
var methods = t.GetMethods().Where(m => m.Name == action.MethodName).ToList();
@@ -121,7 +121,7 @@ namespace PepperDash.Essentials.Core
if (obj == null)
return "{ \"error\":\"No Device\"}";
CType t = obj.GetType();
Type t = obj.GetType();
// get the properties and set them into a new collection of NameType wrappers
var props = t.GetProperties().Select(p => new PropertyNameType(p, obj));
return JsonConvert.SerializeObject(props, Formatting.Indented);
@@ -139,7 +139,7 @@ namespace PepperDash.Essentials.Core
if(dev == null)
return "{ \"error\":\"No Device\"}";
object prop = dev.GetType().GetCType().GetProperty(propertyName).GetValue(dev, null);
object prop = dev.GetType().GetType().GetProperty(propertyName).GetValue(dev, null);
// var prop = t.GetProperty(propertyName);
if (prop != null)
@@ -165,7 +165,7 @@ namespace PepperDash.Essentials.Core
return "{ \"error\":\"No Device\"}";
// Package up method names using helper objects
CType t = obj.GetType();
Type t = obj.GetType();
var methods = t.GetMethods()
.Where(m => !m.IsSpecialName)
.Select(p => new MethodNameParams(p));
@@ -179,7 +179,7 @@ namespace PepperDash.Essentials.Core
return "{ \"error\":\"No Device\"}";
// Package up method names using helper objects
CType t = obj.GetType();
Type t = obj.GetType();
var methods = t.GetMethods()
.Where(m => !m.IsSpecialName)
.Where(m => m.GetCustomAttributes(typeof(ApiAttribute), true).Any())
@@ -226,7 +226,7 @@ namespace PepperDash.Essentials.Core
Debug.LogMessage(LogEventLevel.Information, dev, " Checking for collection '{0}', index '{1}'", objName, indexStr);
}
CType oType = obj.GetType();
Type oType = obj.GetType();
var prop = oType.GetProperty(objName);
if (prop == null)
{
@@ -256,7 +256,7 @@ namespace PepperDash.Essentials.Core
obj = indexedPropInfo.GetValue(collection, new object[] { properParam });
}
// if the index is bad, catch it here.
catch (Crestron.SimplSharp.Reflection.TargetInvocationException e)
catch (TargetInvocationException e)
{
if (e.InnerException is ArgumentOutOfRangeException)
Debug.LogMessage(LogEventLevel.Information, " Index Out of range");
@@ -287,7 +287,7 @@ namespace PepperDash.Essentials.Core
//if (obj == null)
// return "{\"error\":\"No object found\"}";
//CType t = obj.GetType();
//Type t = obj.GetType();
//// get the properties and set them into a new collection of NameType wrappers
@@ -365,7 +365,7 @@ namespace PepperDash.Essentials.Core
}
[AttributeUsage(AttributeTargets.All)]
public class ApiAttribute : CAttribute
public class ApiAttribute : Attribute
{
}

View File

@@ -166,7 +166,7 @@ namespace PepperDash.Essentials.Core
// var dev = GetDeviceForKey(devKey);
// if(dev != null)
// {
// var type = dev.GetType().GetCType();
// var type = dev.GetType().GetType();
// var methods = type.GetMethods(BindingFlags.Public|BindingFlags.Instance);
// var sb = new StringBuilder();
// sb.AppendLine(string.Format("{2} methods on [{0}] ({1}):", dev.Key, type.Name, methods.Length));

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.Reflection;
using System.Reflection;
using PepperDash.Core;
using PepperDash.Essentials.Core.Config;

View File

@@ -1,7 +1,5 @@
using System.Collections.Generic;
using System;
using System.Linq;
using Crestron.SimplSharpPro.DeviceSupport;
using Crestron.SimplSharp.Reflection;
using PepperDash.Core;
using Serilog.Events;
@@ -23,7 +21,7 @@ namespace PepperDash.Essentials.Core
{
public static void DumpFeedbacksToConsole(this IHasFeedback source, bool getCurrentStates)
{
CType t = source.GetType();
Type t = source.GetType();
// get the properties and set them into a new collection of NameType wrappers
var props = t.GetProperties().Select(p => new PropertyNameType(p, t));