@@ -674,44 +674,24 @@ public async Task TryConvertTo_Ok()
674674 Assert . Equal ( [ 1 , 2 , 3 , 4 , 5 ] , entity . Header ) ;
675675 Assert . Equal ( [ 3 , 4 ] , entity . Body ) ;
676676
677- // 测试异常流程
678- var adapter2 = new DataPackageAdapter ( ) ;
679- var result = adapter2 . TryConvertTo ( data , new MockEntitySocketDataConverter ( ) , out var t ) ;
680- Assert . True ( result ) ;
681- Assert . NotNull ( t ) ;
682- Assert . Equal ( [ 1 , 2 , 3 , 4 , 5 ] , entity . Header ) ;
683- }
684-
685- [ Fact ]
686- public async Task TryConvertTo_Null ( )
687- {
688- var port = 8890 ;
689- var server = StartTcpServer ( port , MockSplitPackageAsync ) ;
690- var client = CreateClient ( ) ;
691- var tcs = new TaskCompletionSource ( ) ;
692- MockEntity ? entity = null ;
693-
694- // 设置数据适配器
695- var adapter = new DataPackageAdapter
696- {
697- DataPackageHandler = new FixLengthDataPackageHandler ( 7 ) ,
698- } ;
699- client . SetDataPackageAdapter ( adapter , new MockEntitySocketDataConverter ( ) , t =>
677+ // 测试 SocketDataConverter 标签功能
678+ tcs = new TaskCompletionSource ( ) ;
679+ client . SetDataPackageAdapter < MockEntity > ( adapter , t =>
700680 {
701681 entity = t ;
702682 tcs . SetResult ( ) ;
703683 return Task . CompletedTask ;
704684 } ) ;
705-
706- // 连接 TCP Server
707- var connect = await client . ConnectAsync ( "localhost" , port ) ;
708-
709- // 发送数据
710- var data = new ReadOnlyMemory < byte > ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
711685 await client . SendAsync ( data ) ;
712- await tcs . Task ;
713-
714686 Assert . NotNull ( entity ) ;
687+ Assert . Equal ( [ 1 , 2 , 3 , 4 , 5 ] , entity . Header ) ;
688+
689+ // 测试数据适配器直接调用 TryConvertTo 方法转换数据
690+ var adapter2 = new DataPackageAdapter ( ) ;
691+ var result = adapter2 . TryConvertTo ( data , new MockEntitySocketDataConverter ( ) , out var t ) ;
692+ Assert . True ( result ) ;
693+ Assert . NotNull ( t ) ;
694+ Assert . Equal ( [ 1 , 2 , 3 , 4 , 5 ] , entity . Header ) ;
715695 }
716696
717697 private static TcpListener StartTcpServer ( int port , Func < TcpClient , Task > handler )
@@ -1085,19 +1065,20 @@ class MockEntitySocketDataConverter : SocketDataConverterBase<MockEntity>
10851065 {
10861066 public override bool TryConvertTo ( ReadOnlyMemory < byte > data , [ NotNullWhen ( true ) ] out MockEntity ? entity )
10871067 {
1088- entity = new MockEntity
1089- {
1090- Header = data [ ..5 ] . ToArray ( ) ,
1091- Body = data [ 5 ..] . ToArray ( )
1092- } ;
1093- return true ;
1068+ var v = new MockEntity ( ) ;
1069+ var ret = Parse ( data , v ) ;
1070+ entity = ret ? v : null ;
1071+ return ret ;
10941072 }
10951073 }
10961074
1075+ [ SocketDataConverter ( Type = typeof ( MockEntitySocketDataConverter ) ) ]
10971076 class MockEntity
10981077 {
1078+ [ SocketDataField ( Type = typeof ( byte [ ] ) , Start = 0 , Length = 5 ) ]
10991079 public byte [ ] ? Header { get ; set ; }
11001080
1081+ [ SocketDataField ( Type = typeof ( byte [ ] ) , Start = 5 , Length = 2 ) ]
11011082 public byte [ ] ? Body { get ; set ; }
11021083 }
11031084}
0 commit comments