|
@@ -7,12 +7,24 @@ namespace MQTTnet.Extensions |
|
|
{ |
|
|
{ |
|
|
public static string GetUserProperty(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) |
|
|
public static string GetUserProperty(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) |
|
|
{ |
|
|
{ |
|
|
return message?.UserProperties?.SingleOrDefault(up => up.Name.Equals(propertyName, comparisonType))?.Value; |
|
|
|
|
|
|
|
|
if (message == null) throw new ArgumentNullException(nameof(message)); |
|
|
|
|
|
if (propertyName == null) throw new ArgumentNullException(nameof(propertyName)); |
|
|
|
|
|
|
|
|
|
|
|
return message.UserProperties?.SingleOrDefault(up => up.Name.Equals(propertyName, comparisonType))?.Value; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public static T GetUserProperty<T>(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) |
|
|
public static T GetUserProperty<T>(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) |
|
|
{ |
|
|
{ |
|
|
return (T) Convert.ChangeType(GetUserProperty(message, propertyName, comparisonType), typeof(T)); |
|
|
|
|
|
|
|
|
var value = GetUserProperty(message, propertyName, comparisonType); |
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
|
|
|
return (T) Convert.ChangeType(value, typeof(T)); |
|
|
|
|
|
} |
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new InvalidOperationException($"Cannot convert value({value}) of UserProperty({propertyName}) to {typeof(T).FullName}.", ex); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |