1
1
namespace NServiceBus . Unicast . Subscriptions ;
2
2
3
3
using System ;
4
- using System . Linq ;
5
4
6
5
/// <summary>
7
6
/// Representation of a message type that clients can be subscribed to.
@@ -24,9 +23,18 @@ public MessageType(Type type)
24
23
public MessageType ( string messageTypeString )
25
24
{
26
25
ArgumentException . ThrowIfNullOrWhiteSpace ( messageTypeString ) ;
27
- var parts = messageTypeString . Split ( ',' ) ;
26
+
28
27
Version = ParseVersion ( messageTypeString ) ;
29
- TypeName = parts . First ( ) ;
28
+
29
+ var messageTypeSpan = messageTypeString . AsSpan ( ) ;
30
+ var index = messageTypeSpan . IndexOf ( ',' ) ;
31
+
32
+ if ( index >= 0 )
33
+ {
34
+ messageTypeSpan = messageTypeSpan [ ..index ] ;
35
+ }
36
+
37
+ TypeName = messageTypeSpan . ToString ( ) ;
30
38
}
31
39
32
40
/// <summary>
@@ -62,17 +70,19 @@ public MessageType(string typeName, Version version)
62
70
/// </summary>
63
71
public Version Version { get ; }
64
72
65
- static Version ParseVersion ( string versionString )
73
+ static Version ParseVersion ( ReadOnlySpan < char > input )
66
74
{
67
- const string version = "Version=" ;
68
- var index = versionString . IndexOf ( version ) ;
75
+ const string versionPrefix = "Version=" ;
76
+ var versionPrefixIndex = input . IndexOf ( versionPrefix ) ;
69
77
70
- if ( index >= 0 )
78
+ if ( versionPrefixIndex >= 0 )
71
79
{
72
- versionString = versionString . Substring ( index + version . Length )
73
- . Split ( ',' ) . First ( ) ;
80
+ input = input [ ( versionPrefixIndex + versionPrefix . Length ) ..] ;
81
+ var firstComma = input . IndexOf ( ',' ) ;
82
+ input = input [ ..firstComma ] ;
74
83
}
75
- return Version . Parse ( versionString ) ;
84
+
85
+ return Version . Parse ( input ) ;
76
86
}
77
87
78
88
/// <summary>
0 commit comments