mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-25 23:53:07 +08:00
GetUserProperty extension.
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace MQTTnet.Extensions
|
||||||
|
{
|
||||||
|
public static class UserPropertyExtension
|
||||||
|
{
|
||||||
|
public static string GetUserProperty(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase)
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
return (T) Convert.ChangeType(GetUserProperty(message, propertyName, comparisonType), typeof(T));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using MQTTnet.Extensions;
|
||||||
|
using MQTTnet.Packets;
|
||||||
|
|
||||||
|
namespace MQTTnet.Tests
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class MqttApplicationMessage_Tests
|
||||||
|
{
|
||||||
|
[TestMethod]
|
||||||
|
public void GetUserProperty_Test()
|
||||||
|
{
|
||||||
|
var message = new MqttApplicationMessage
|
||||||
|
{
|
||||||
|
UserProperties = new List<MqttUserProperty>
|
||||||
|
{
|
||||||
|
new MqttUserProperty("foo", "bar"),
|
||||||
|
new MqttUserProperty("value", "1011"),
|
||||||
|
new MqttUserProperty("CASE", "insensitive")
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Assert.AreEqual("bar", message.GetUserProperty("foo"));
|
||||||
|
Assert.AreEqual(1011, message.GetUserProperty<int>("value"));
|
||||||
|
Assert.AreEqual("insensitive", message.GetUserProperty("case"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user