海外主机测评

您现在的位置是:首页 > 国外服务器 > 正文

国外服务器

propertyinfopropertyinfosetvalue

cds8202023-04-28国外服务器68
本文目录一览:1、如何获取一个对象的所有属性?(c#)2、c#中如何取消控件的事件绑定?3、C#如何获取类中成员的数据类型4、.NET如何判断一个对象中是否包含NULL值?

本文目录一览:

  • 1、如何获取一个对象的所有属性?(c#)
  • 2、c#中如何取消控件的事件绑定?
  • 3、C#如何获取类中成员的数据类型
  • 4、.NET 如何判断一个对象中是否包含NULL值?
  • 5、c# 怎么获取方法注释信息

如何获取一个对象的所有属性?(c#)

我给你来一段吧 自己写的 给分啊

先写一个从字符串生成任何类型的对象的函数

public object stringToObject(string str,Type objectType)//传递两个参数,一个是字符串含有每个属性的属性名和值对,属性和值用冒号分隔,属性与属性用逗号分隔,另一个参数是要创建的对象的类型{string[] shuxing = str.Split(new char[] { ',' });//将字符串分解成 “属性:值”数组

for (int i = 0; i shuxing.Length; i++){shuxing[i]= shuxing[i].Replace(\, );

}//去掉字符串的双引号

object obj = System.Activator.CreateInstance(objectType); //使用反射动态创建对象

PropertyInfo[] pis =obj .GetType().GetProperties(BindingFlags.Public|BindingFlags.Instance);//获得对象的所有public属性

if (pis != null)//如果获得了属性

foreach (PropertyInfo pi in pis)//针对每一个属性进行循环{for (int i = 0; i shuxing.Length; i++)//检查字符串中的所有“属性:值”列表{if (shuxing[i].Split(new char[] { ':' })[0] == pi.Name)//如果对象的属性名称恰好和字符串中的属性名相同{Type proertyType= pi.PropertyType; //获得对象属性的类型

pi.SetValue(obj, Convert.ChangeType(shuxing[i].Split(new char[] { ':' })[1],proertyType), null);

//将字符串中的字符串类型的“值”转换为对象属性的类型,并赋值给对象属性}}}return obj;}然后调用这个函数

定义一个学生类class stu{string _name;int _age;public string name

{get{return _name;}

set {_name=value;}}public int age{get { return _age; }

set { _age = value; }}}pageload里面可以使用下面方法创建stu对象了

由于使用了反射技术需要导入名字空间 using System.ReflectiON;

using using System.Reflection;

。。。。。。。

c#中如何取消控件的事件绑定?

你这个委托是动态创建的自定义委托,估计不通过函数、凭几句代码是不可能清除事件的,还是自己编个函数吧。网上有很多,你可以参考这个:

这个估计你也看过了,不过确实够精炼了:(需要using

system.reflection)

void

clearevent(control

control,

string

eventname)

{

if

(control

==

null)

return;

if

(string.isnullorempty(eventname))

return;

bindingflags

mpropertyflags

=

bindingflags.instance

|

bindingflags.public

|

bindingflags.static

|

bindingflags.nonpublic;

bindingflags

mfieldflags

=

bindingflags.static

|

bindingflags.nonpublic;

type

controltype

=

typeof(system.windows.forms.control);

propertyinfo

propertyinfo

=

controltype.getproperty("events",

mpropertyflags);

eventhandlerlist

eventhandlerlist

=

(eventhandlerlist)propertyinfo.getvalue(control,

null);

fieldinfo

fieldinfo

=

(typeof(control)).getfield("event"

+

eventname,

mfieldflags);

delegate

d

=

eventhandlerlist[fieldinfo.getvalue(control)];

if

(d

==

null)

return;

eventinfo

eventinfo=controltype.getevent(eventname);

foreach

(delegate

dx

in

d.getinvocationlist())

eventinfo.removeeventhandler(control,

dx);

}

调用案例:

clearevent(button1,"click");//就会清除button1对象的click事件的所有挂接事件。

C#如何获取类中成员的数据类型

你用反射,那你获取PropertyInfo会告诉你当前属性是什么类型的。PropertyType 这个是指示什么数据类型。

.NET 如何判断一个对象中是否包含NULL值?

public static string AnyPropertyIsNullT(T t) where T : class

{

PropertyInfo[] rs =  t.GetType().GetProperties();

foreach( PropertyInfo prop in rs )

{

PropertyInfo Info = typeof(T).GetProperty(prop.Name);

object value =Info.GetValue(t);

if( value == null )

{

return string.Format("Property: {0}, null value!", prop.Name);

}

}

return null;

}

c# 怎么获取方法注释信息

为了使用C#提供的XML注释功能,注释应该使用特殊的注释语法(///)开头。在///之后,你可以使用预先定义的标签注释你的代码,也可以插入自己定义的标签。定制的标签将会在随后加入到生成的注释文档中。

Summary 对整体进行概要性描述

summaryDescription/summary

类、属性(不推荐)、方法等

para 跟在Summary之后,对方法所涉及的入口参数进行有效的解释

param name=username本参数是用户的帐号/param

方法的入口参数;

returns 对方法的返回值进行解释;

returns返回值零代表操作成功,-1代表操作不成功/returns

方法的返回值;

remarks 对一些语句进行备注性描述

remarks本类需要调用另外一个User类相关方法/remarks

类、方法、属性等;

see 在生成的文档中产生一个连接到其它描述的超链接;

see cref=”[member]”/

可以在其它注释标识符中加入

seealso 与上者的区别是本标识符显示超链接在一个文档的尾部的“See Also”区域,而前者在文档之中;

seealso cref=”[member]”/

不可以在其它注释标识符中加入

value 对一个属性进行概要性解释;

value这是一个public属性/value

属性

code 如果需要置入一部分源代码段,可以使用本标识符将其标记出来

code

public int add(int a,b)

{return a+b;

}

/code

可以在其它注释标识符中加入

exception 对程序中可能抛出的异常做解释;

exception cref=”System.Exception”抛出的异常情况/exception

在方法当中如果有抛出异常,如“try…catch结构”时可以使用本标识符做解释

permission 对方法的访问权限做一些解释:

permission cref=”System.Security.PermissionSet”这是公共方法/permission

方法,属性

c 与code标识符基本相同,但本标识符仅用于单行代码;

creturn a+b;/c

可以在其它标识符中插入使用;

example 举例说明,通常与code配套使用;

example 以下示例说明如何调用Add方法:

code

class MyClass

{

  public static int Main()

{

return Add(1+2);

}

}

/code

/example

可以在其它标识符中插入;

paramref 在其它地方引用一个入口参数

paramref cref=”a”请注意,这是一个整型参数/paramref

using System;

/// summary

/// ClassName:SomeClass

/// Version:1.0

/// Date:2001/6/21

/// Author:cniter

/// /summary

/// remarks

/// 本类仅是一个示例教学类,不完成具体的工作

/// /remarks

public class SomeClass

{

   /// summary

   /// 内部私有变量,存储名称/summary

  private string myName = null;

   public SomeClass()

   {

       //

       // TODO: Add Constructor Logic here

       //

   }

  /// summary

  /// 名称属性 /summary

  /// value

  ///本属性为只读属性,返回用户名/value

  public string Name

  {

     get

     {

        if ( myName == null )

        {

           throw new Exception("Name is null");

        }

         

        return myName;

     }

  }

  /// summary

  /// 本方法是没有进行具体构建/summary

  /// param name="s" 入口参数S是一个String类型/param

  /// seealso cref="String"

  ///String类型的信息/seealso

  public void SomeMethod(string s)

  {

  }

  /// summary

  /// 本方法仍然没有进行具体构建/summary

  /// returns

  /// 返回值始终为0./returns

  /// seealso cref="SomeMethod(string)"

  /// 参看SomeMethod(string)方法的说明 /seealso

  public int SomeOtherMethod()

  {

     return 0;

  }

  /// summary

   /// 该应用程序的入口

  /// /summary

  /// param name="args" 入口参数集合/param

   public static int Main(String[] args)

   {

       //

       // TODO: Add code to start application here

       //

       return 0;

   }

}

propertyinfo的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于propertyinfosetvalue、propertyinfo的信息别忘了在本站进行查找喔。

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~