mirror of
https://github.com/evopro-ag/Sharp7Reactive.git
synced 2025-12-16 11:42:52 +00:00
Implement MatchesType
This commit is contained in:
@@ -1,9 +1,25 @@
|
||||
namespace Sharp7.Rx.Extensions;
|
||||
using Sharp7.Rx.Enums;
|
||||
|
||||
namespace Sharp7.Rx.Extensions;
|
||||
|
||||
internal static class S7VariableAddressExtensions
|
||||
{
|
||||
public static bool MatchesType(this S7VariableAddress address, Type type)
|
||||
private static readonly Dictionary<Type, Func<S7VariableAddress, bool>> supportedTypeMap = new()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
{typeof(bool), a => a.Type == DbType.Bit},
|
||||
{typeof(string), a => a.Type is DbType.String or DbType.WString or DbType.Byte },
|
||||
{typeof(byte), a => a.Type==DbType.Byte && a.Length == 1},
|
||||
{typeof(short), a => a.Type==DbType.Int},
|
||||
{typeof(ushort), a => a.Type==DbType.UInt},
|
||||
{typeof(int), a => a.Type==DbType.DInt},
|
||||
{typeof(uint), a => a.Type==DbType.UDInt},
|
||||
{typeof(long), a => a.Type==DbType.LInt},
|
||||
{typeof(ulong), a => a.Type==DbType.ULInt},
|
||||
{typeof(float), a => a.Type==DbType.Single},
|
||||
{typeof(double), a => a.Type==DbType.Double},
|
||||
{typeof(byte[]), a => a.Type==DbType.Byte},
|
||||
};
|
||||
|
||||
public static bool MatchesType(this S7VariableAddress address, Type type) =>
|
||||
supportedTypeMap.TryGetValue(type, out var map) && map(address);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user