propertyinfopropertyinfosetvalue
本文目录一览:
- 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的信息别忘了在本站进行查找喔。
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~