我有一些对象,其中一些属性是URLEncoded。
Uri.UnescapeDataString对象的所有属性的最快方法是什么?
答案 0 :(得分:0)
不清楚你会达到什么目标。假设您想要自动化解码过程,并且不希望单独调用每个属性并对其进行解码。 迭代类属性的方法是反射。实际上,反思从未如此迅速。但它也不清楚,你的意思是“最快”。
以下是如何使用反射实现它的简短示例:
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));
}
}
}
}
或者只是单独调用每个属性并对其进行解码。像Regex.Unescape或HttpUtility.UrlDecode这样的Uri.UnescapeDataString的所有替代方案都会执行得慢得多。