您的位置:首页 > Web前端 > JavaScript

C# 通过属性名称获取(读取)Json对象属性值的方法

2017-01-06 16:16 721 查看
之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊!

然后今天我再上网找了找,被我找到了,跟大家分享一下。

其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~

不得不说反射是一种很强大的技术。。

下面给代码,希望能帮到有需要的人。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace PropertyNameGetPropertyValueDemo

{

class Program

{

static void Main(string[] args)

{

Person ps = new Person();

ps.Name = "CTZ";

ps.Age = 21;

Demo dm = new Demo();

dm.Str = "String";

dm.I = 1;

Console.WriteLine(ps.GetValue("Name"));

Console.WriteLine(ps.GetValue("Age"));

Console.WriteLine(dm.GetValue("Str"));

Console.WriteLine(dm.GetValue("I"));

}

}

abstract class AbstractGetValue

{

public object GetValue(string propertyName)

{

return this.GetType().GetProperty(propertyName).GetValue(this, null);

}

}

class Person : AbstractGetValue

{

public string Name

{ get; set; }

public int Age

{ get; set; }

}

class Demo : AbstractGetValue

{

public string Str

{ get; set; }

public int I

{ get; set; }

}

}

如果觉得上面比较复杂了,可以看下面的简化版。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace GetValue

{

class Program

{

static void Main(string[] args)

{

Person ps = new Person();

ps.Name = "CTZ";

ps.Age = 21;

Console.WriteLine(ps.GetValue("Name"));

Console.WriteLine(ps.GetValue("Age"));

}

}

class Person

{

public string Name

{ get; set; }

public int Age

{ get; set; }

public object GetValue(string propertyName)

{

return this.GetType().GetProperty(propertyName).GetValue(this, null);

}

}

}

实质语句只有一句:

this.GetType().GetProperty(propertyName).GetValue(this, null);


其他可以忽略。。

Object.GetType().GetProperty().GetValue()

不能直接读取Json转化对象 JsonConvert.DeserializeObject(JsonStr),必须有对应类型[b]JsonConvert.DeserializeObject<>(JsonStr),所以无意义[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: