GetUserProperty extension.

This commit is contained in:
PMExtra
2020-03-30 17:10:04 +08:00
parent 0653b89701
commit 55dc940abb
2 changed files with 47 additions and 0 deletions
@@ -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"));
}
}
}