|
2 | 2 | { |
3 | 3 | using System; |
4 | 4 | using System.Collections.Generic; |
5 | | - |
| 5 | + using System.Linq; |
6 | 6 | #if WinUI3 |
7 | 7 | using Microsoft.UI.Xaml; |
8 | 8 | using Microsoft.UI.Xaml.Markup; |
@@ -260,7 +260,8 @@ public virtual IXamlType KeyType |
260 | 260 |
|
261 | 261 | public virtual IXamlType BoxedType => throw new NotImplementedException(); |
262 | 262 |
|
263 | | - public virtual object ActivateInstance() { |
| 263 | + public virtual object ActivateInstance() |
| 264 | + { |
264 | 265 | throw new NotImplementedException(); |
265 | 266 | } |
266 | 267 |
|
@@ -319,7 +320,8 @@ public override IXamlType BaseType |
319 | 320 |
|
320 | 321 | public override IXamlType BoxedType { get => _baseType; } |
321 | 322 |
|
322 | | - public override bool IsArray { |
| 323 | + public override bool IsArray |
| 324 | + { |
323 | 325 | get { return _isArray; } |
324 | 326 | } |
325 | 327 |
|
@@ -410,30 +412,27 @@ public override object CreateFromString(String input) |
410 | 412 | Int32 enumFieldValue = 0; |
411 | 413 | try |
412 | 414 | { |
| 415 | + var trimmedValue = valuePart.Trim(); |
413 | 416 | object partValue; |
414 | | - if (_enumValues.TryGetValue(valuePart.Trim(), out partValue)) |
| 417 | + if (_enumValues.TryGetValue(trimmedValue, out partValue)) |
415 | 418 | { |
416 | 419 | enumFieldValue = Convert.ToInt32(partValue); |
417 | 420 | } |
418 | 421 | else |
419 | 422 | { |
420 | 423 | try |
421 | 424 | { |
422 | | - enumFieldValue = Convert.ToInt32(valuePart.Trim()); |
| 425 | + enumFieldValue = Convert.ToInt32(trimmedValue); |
423 | 426 | } |
424 | 427 | catch (FormatException) |
425 | 428 | { |
426 | | - foreach (var key in _enumValues.Keys) |
427 | | - { |
428 | | - if (String.Compare(valuePart.Trim(), key, StringComparison.OrdinalIgnoreCase) == 0 && |
429 | | - _enumValues.TryGetValue(key.Trim(), out partValue)) |
430 | | - { |
431 | | - enumFieldValue = Convert.ToInt32(partValue); |
432 | | - break; |
433 | | - } |
434 | | - } |
| 429 | + var key = _enumValues.FirstOrDefault(kvp => String.Equals(trimmedValue, kvp.Key, StringComparison.OrdinalIgnoreCase)); |
| 430 | + |
| 431 | + enumFieldValue = Convert.ToInt32(key.Value ?? 0); |
435 | 432 | } |
436 | 433 | } |
| 434 | + |
| 435 | + |
437 | 436 | value |= enumFieldValue; |
438 | 437 | } |
439 | 438 | catch (FormatException) |
|
0 commit comments