|
1 | 1 | using System.IO;
|
2 |
| -using System.Linq; |
3 | 2 | using Renci.SshNet.Common;
|
4 | 3 | using System.Globalization;
|
5 | 4 | using Renci.SshNet.Abstractions;
|
@@ -31,13 +30,22 @@ protected override int BufferCapacity
|
31 | 30 | /// </summary>
|
32 | 31 | protected override void WriteBytes(SshDataStream stream)
|
33 | 32 | {
|
34 |
| - var messageAttribute = GetType().GetCustomAttributes<MessageAttribute>(true).FirstOrDefault(); |
35 |
| - |
36 |
| - if (messageAttribute == null) |
37 |
| - throw new SshException(string.Format(CultureInfo.CurrentCulture, "Type '{0}' is not a valid message type.", GetType().AssemblyQualifiedName)); |
| 33 | + var enumerator = GetType().GetCustomAttributes<MessageAttribute>(true).GetEnumerator(); |
| 34 | + try |
| 35 | + { |
| 36 | + if (!enumerator.MoveNext()) |
| 37 | + { |
| 38 | + throw new SshException(string.Format(CultureInfo.CurrentCulture, "Type '{0}' is not a valid message type.", GetType().AssemblyQualifiedName)); |
| 39 | + } |
38 | 40 |
|
39 |
| - stream.WriteByte(messageAttribute.Number); |
40 |
| - base.WriteBytes(stream); |
| 41 | + var messageAttribute = enumerator.Current; |
| 42 | + stream.WriteByte(messageAttribute.Number); |
| 43 | + base.WriteBytes(stream); |
| 44 | + } |
| 45 | + finally |
| 46 | + { |
| 47 | + enumerator.Dispose(); |
| 48 | + } |
41 | 49 | }
|
42 | 50 |
|
43 | 51 | internal byte[] GetPacket(byte paddingMultiplier, Compressor compressor)
|
@@ -155,12 +163,20 @@ private static byte GetPaddingLength(byte paddingMultiplier, long packetLength)
|
155 | 163 | /// </returns>
|
156 | 164 | public override string ToString()
|
157 | 165 | {
|
158 |
| - var messageAttribute = GetType().GetCustomAttributes<MessageAttribute>(true).SingleOrDefault(); |
159 |
| - |
160 |
| - if (messageAttribute == null) |
161 |
| - return string.Format(CultureInfo.CurrentCulture, "'{0}' without Message attribute.", GetType().FullName); |
| 166 | + var enumerator = GetType().GetCustomAttributes<MessageAttribute>(true).GetEnumerator(); |
| 167 | + try |
| 168 | + { |
| 169 | + if (!enumerator.MoveNext()) |
| 170 | + { |
| 171 | + return string.Format(CultureInfo.CurrentCulture, "'{0}' without Message attribute.", GetType().FullName); |
| 172 | + } |
162 | 173 |
|
163 |
| - return messageAttribute.Name; |
| 174 | + return enumerator.Current.Name; |
| 175 | + } |
| 176 | + finally |
| 177 | + { |
| 178 | + enumerator.Dispose(); |
| 179 | + } |
164 | 180 | }
|
165 | 181 |
|
166 | 182 | /// <summary>
|
|
0 commit comments