澳门威利斯人_威利斯人娱乐「手机版」

来自 网络资讯 2019-06-08 07:15 的文章
当前位置: 澳门威利斯人 > 网络资讯 > 正文

利用反射来判断对象是否包含某个属性的实现方

正文实例显示了C#采取反射来剖断指标是否带有某些属性的兑现格局,对于C#次第设计职员的话有肯定的就学借鉴价值。

要想对一个连串实例的品质或字段举行动态赋值或取值,首先得得到这几个实例或项指标Type,微软早已为我们提供了丰盛多的措施。
率先创立贰个测试的类

复制代码 代码如下:

切实实当代码如下:

复制代码 代码如下:

static void Main(string[] args)
{
    Type type = typeof(MyObject);
    object obj = type.GetConstructor(Type.EmptyTypes).Invoke(null);
    Console.WriteLine(obj);
}

/// <summary>
/// 利用反射来判断对象是否包含某个属性
/// </summary>
/// <param name="instance">object</param>
/// <param name="propertyName">需要判断的属性</param>
/// <returns>是否包含</returns>
public static bool ContainProperty(this object instance, string propertyName)
{
  if (instance != null && !string.IsNullOrEmpty(propertyName))
  {
 PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
 return (_findedPropertyInfo != null);
  }
  return false;
}

public class MyClass
{
public int one { set; get; }
public int two { set; get; }
public int five { set; get; }
public int three { set; get; }
public int four { set; get; }
}

class MyObject
{

代码应用办法如下:

下一场编写反射该类的代码

}

bool cc = _person.ContainProperty("cc");
bool aa = _person.ContainProperty("Age");

复制代码 代码如下:

以前小编一向未曾发觉原本组织是不能那样实例化的

愿意本文所述实例能够对大家有所协理!

MyClass obj = new MyClass();
Type t = typeof(MyClass);
//循环赋值
int i = 0;
foreach (var item in t.GetProperties())
{
item.SetValue(obj, i, null);
i = 1;
}
//单独赋值
t.GetProperty("five").SetValue(obj, 11111111, null);
//循环获取
StringBuilder sb = new StringBuilder();
foreach (var item in t.GetProperties())
{
sb.Append("类型:" item.PropertyType.FullName " 属性名:" item.Name " 值:" item.GetValue(obj, null) "<br />");
}
//单独取值
int five = Convert.ToInt32(t.GetProperty("five").GetValue(obj, null));
sb.Append("单独取five的值:" five);
string result = sb.ToString();
Response.Write(result);

奥门威尼斯人误乐城 1

你也许感兴趣的文章:

  • c#反射调用方法言传身教
  • c#反射机制学习和选拔反射获取类型音信
  • C#反射本事的简易操作(读取和设置类的品质)
  • C#奥门威尼斯人误乐城,中使用反射获取结构体实例及思路
  • C#反射的有的选拔
  • C#中的程序集和反光介绍
  • C#贯彻利用反射简化给类字段赋值的办法
  • c#使用反射调用类型成员示例
  • 关于C#基础知识回看--反射(一)
  • .NET/C#何以选用反射注册事件详解

测试展现结果:
类型:System.Int32 属性名:one 值:0
类型:System.Int32 属性名:two 值:1
类型:System.Int32 属性名:five 值:11111111
类型:System.Int32 属性名:three 值:3
类型:System.Int32 属性名:four 值:4
单独取five的值:11111111

换种办法,就如结构体使用反射不可能获取其协会函数ConstructorInfo对象

好了,精通了类的属性反射使用后,聪明的您恐怕就悟出了艺术也是能够这么做的,即t.GetProperties()改为t.GetMethods(),操作方法同上。

奥门威尼斯人误乐城 2

您大概感兴趣的稿子:

  • c#反射调用方法言传身教
  • c#反射机制学习和选用反射获取类型音信
  • C#利用反射来剖断目的是或不是包括有个别属性的落到实处格局
  • C#中央银行使反射获取结构体实例及思路
  • C#反射的一些运用
  • C#中的程序集和反光介绍
  • C#福衢寿车接纳反射简化给类字段赋值的章程
  • c#动用反射调用类型成员示例
  • 关于C#基础知识回看--反射(一)
  • .NET/C#如何利用反射注册事件详解

类中有三个隐式的构造函数,而构造没有构造函数

本身依旧尝试寻找非public构造函数

本文由澳门威利斯人发布于网络资讯,转载请注明出处:利用反射来判断对象是否包含某个属性的实现方

关键词: 澳门威利斯人