Uri.UnescapeDataString对象的所有属性

本文关键字:属性 UnescapeDataString 对象 Uri | 更新日期: 2023-09-27 18:00:57

我有一些对象,其中一些属性是URLEncoded。

Uri.UnescapeDataString对象上所有属性的最快方法是什么?

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,执行速度会慢得多。