Skip to content

Commit a439342

Browse files
authored
feat(Socket): add DataByteConverter (#562)
* refactor: 代码格式化 * refactor: 更改日志 * doc: 精简命名空间 * feat: 增加 Byte 转换器 * chore: bump version 9.0.9 * feat: 增加 byte 内置解析逻辑 * chore: bump version 9.0.10 * doc: 更新文档注释 * refactor: 增加边界判断
1 parent 78b6931 commit a439342

25 files changed

Lines changed: 48 additions & 31 deletions

src/extensions/BootstrapBlazor.Socket/BootstrapBlazor.Socket.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<Version>9.0.8</Version>
4+
<Version>9.0.10</Version>
55
</PropertyGroup>
66

77
<PropertyGroup>

src/extensions/BootstrapBlazor.Socket/DataConverter/DataConverter.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,8 @@ public virtual bool TryConvertTo(ReadOnlyMemory<byte> data, [NotNullWhen(true)]
4141
}
4242
catch (Exception ex)
4343
{
44-
SocketLogging.LogError(ex, "DataConverter TryConvertTo failed");
44+
SocketLogging.LogError(ex, $"DataConverter {nameof(TryConvertTo)} failed");
4545
}
46-
4746
return ret;
4847
}
4948

@@ -64,8 +63,6 @@ protected virtual bool Parse(ReadOnlyMemory<byte> data, TEntity entity)
6463
var ret = false;
6564
if (entity != null)
6665
{
67-
var unuseProperties = new List<PropertyInfo>(32);
68-
6966
// 通过 SocketDataPropertyConverterAttribute 特性获取属性转换器
7067
var properties = entity.GetType().GetProperties().Where(p => p.CanWrite).ToList();
7168
foreach (var p in properties)
@@ -81,10 +78,8 @@ protected virtual bool Parse(ReadOnlyMemory<byte> data, TEntity entity)
8178
}
8279
}
8380
}
84-
8581
ret = true;
8682
}
87-
8883
return ret;
8984
}
9085

@@ -95,7 +90,6 @@ protected virtual bool Parse(ReadOnlyMemory<byte> data, TEntity entity)
9590
{
9691
attr = v;
9792
}
98-
9993
return attr;
10094
}
10195
}

src/extensions/BootstrapBlazor.Socket/Extensions/DataPropertyExtensions.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ static class DataPropertyExtensions
2929
var type = attribute.Type;
3030
if (type != null)
3131
{
32-
if (type == typeof(byte[]))
32+
if (type == typeof(byte))
33+
{
34+
converter = new DataByteConverter();
35+
}
36+
else if (type == typeof(byte[]))
3337
{
3438
converter = new DataByteArrayConverter();
3539
}

src/extensions/BootstrapBlazor.Socket/PropertyConverter/DataBoolConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace BootstrapBlazor.Socket.DataConverters;
66

77
/// <summary>
8-
/// Sokcet 数据转换为 bool 数据转换器
8+
/// Socket 数据转换为 bool 数据转换器
99
/// </summary>
1010
public class DataBoolConverter : IDataPropertyConverter
1111
{
@@ -16,7 +16,7 @@ public class DataBoolConverter : IDataPropertyConverter
1616
public object? Convert(ReadOnlyMemory<byte> data)
1717
{
1818
var ret = false;
19-
if (data.Length == 1)
19+
if (data.Length > 0)
2020
{
2121
ret = data.Span[0] != 0x00;
2222
}

src/extensions/BootstrapBlazor.Socket/PropertyConverter/DataByteArrayConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace BootstrapBlazor.Socket.DataConverters;
66

77
/// <summary>
8-
/// Sokcet 数据转换为 byte[] 数组转换器
8+
/// Socket 数据转换为 byte[] 数组转换器
99
/// </summary>
1010
public class DataByteArrayConverter : IDataPropertyConverter
1111
{
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright (c) BootstrapBlazor & Argo Zhang (argo@live.ca). All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
// Website: https://www.blazor.zone or https://argozhang.github.io/
4+
5+
namespace BootstrapBlazor.Socket.DataConverters;
6+
7+
/// <summary>
8+
/// Socket 数据转换为 byte 转换器
9+
/// </summary>
10+
public class DataByteConverter : IDataPropertyConverter
11+
{
12+
/// <summary>
13+
/// <inheritdoc/>
14+
/// </summary>
15+
/// <param name="data"></param>
16+
public object? Convert(ReadOnlyMemory<byte> data)
17+
{
18+
return data.Length > 0 ? data.Span[0] : 0x0;
19+
}
20+
}

src/extensions/BootstrapBlazor.Socket/PropertyConverter/DataDoubleBigEndianConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace BootstrapBlazor.Socket.DataConverters;
88

99
/// <summary>
10-
/// Sokcet 数据转换为 double 数据大端转换器
10+
/// Socket 数据转换为 double 数据大端转换器
1111
/// </summary>
1212
public class DataDoubleBigEndianConverter : IDataPropertyConverter
1313
{

src/extensions/BootstrapBlazor.Socket/PropertyConverter/DataDoubleLittleEndianConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace BootstrapBlazor.Socket.DataConverters;
88

99
/// <summary>
10-
/// Sokcet 数据转换为 double 数据小端转换器
10+
/// Socket 数据转换为 double 数据小端转换器
1111
/// </summary>
1212
public class DataDoubleLittleEndianConverter : IDataPropertyConverter
1313
{

src/extensions/BootstrapBlazor.Socket/PropertyConverter/DataEnumConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace BootstrapBlazor.Socket.DataConverters;
66

77
/// <summary>
8-
/// Sokcet 数据转换为 Enum 数据转换器
8+
/// Socket 数据转换为 Enum 数据转换器
99
/// </summary>
1010
public class DataEnumConverter(Type? type) : IDataPropertyConverter
1111
{

src/extensions/BootstrapBlazor.Socket/PropertyConverter/DataInt16BigEndianConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
namespace BootstrapBlazor.Socket.DataConverters;
88

99
/// <summary>
10-
/// Sokcet 数据转换为 short 数据大端转换器
10+
/// Socket 数据转换为 short 数据大端转换器
1111
/// </summary>
1212
public class DataInt16BigEndianConverter : IDataPropertyConverter
1313
{

0 commit comments

Comments
 (0)