Uri.UnescapeDataString对象的所有属性
本文关键字:属性 UnescapeDataString 对象 Uri | 更新日期: 2023-09-27 18:00:57
我有一些对象,其中一些属性是URLEncoded。
Uri.UnescapeDataString对象上所有属性的最快方法是什么?
不清楚您要达到的目标。只是假设你想自动化解码过程,而不想单独调用每个属性并对其进行解码。迭代类属性的方法是反射。事实上,反思从来都不快。但也不清楚你所说的"最快"是什么意思。
以下是如何通过反射实现它的简短示例:
public class DecoderTests
{
public String OneItem { get; set; }
public String SecondItem { get; set; }
public String ThirdClean { get; set; }
}
class Program
{
static void Main(string[] args)
{
var ddd = Uri.EscapeUriString("Http://google tes.com");
var decod = new DecoderTests
{
OneItem = ddd.ToString(),
SecondItem = ddd.ToString(),
ThirdClean = "clean"
};
PropertyInfo[] properties = typeof(DecoderTests).GetProperties();
foreach (PropertyInfo property in properties)
{
var current = property.GetValue(decod) as String;
if (!String.IsNullOrEmpty(current))
{
property.SetValue(decod, Uri.UnescapeDataString(current));
}
}
}
}
或者只需单独调用每个属性并对其进行解码。Uri.UnescapeDataString的所有替代方案,如Regex.Unescape或HttpUtility.UrlDecode,执行速度会慢得多。