C# 反射获取属性的时候如何只获取该类的属性,我不想取得父类的属性。

C# 反射获取属性的时候如何只获取该类的属性,我不想取得父类的属性。,第1张

class

Program

{

static

void

Main(string[]

args)

{

string

path

=

@"D:\OpenSSL";

//

ConsoleWriteLine(isDir(path));

//ConsoleRead();

Man

man

=

new

Man();

Type

type

=

manGetType();

PropertyInfo[]

infos

=

typeGetProperties();

foreach

(PropertyInfo

info

in

infos)

{

ConsoleWriteLine(infoDeclaringTypeFullName

+

"

,

"

+

infoName);

}

ConsoleRead();

}

}

public

class

Person

{

public

string

name

{

get;

set;

}

public

string

password

{

get;

set;

}

}

public

class

Man

:

Person

{

public

string

height

{

get;

set;

}

public

string

weight

{

get;

set;

}

}

比较笨的办法。

肯定有更优解决方案。

那就需要利用扩展方法,现将T的Type获取到,方法如下:

public static class Extensions

{

public static Type GetListItemType<T>(this IList<T> list)

{

return typeof(T);

}

}

请注意看异常信息。未能从“当前”程序集获取“外部”程序集中拥有指定完整限定名的类型

事实上,直接使用TypeGetType()会从当前程序集,也就是"test3"程序集中查找。

想要查找NHapiModelV23程序集中的类型,请在该程序集上使用GetType

Assembly asmNHapi=AssemblyLoadFrom();

Type outerType=asmNHapiGetType();

如果想尽量少的改动自己的代码也成,直接在你的var classes上进行linq查询就好。

Type[] classes=AssemblyLoadFrom()GetTypes();

Type tt=classesFirstOrDefault(t=>tFullName="NHapiModelV23GroupORM_001_"+properties[i]);

if(tt!=null)

    DoSomething();

最后提醒,请勿使用AssemblyLoad方法,因为该方法已被弃用,请使用LoadFrom和LoadFile来加载外部程序集。

此外,类型的完全限定名和短名并不影响类型的搜索。使用GetType时会从根命名空间开始一层一层查找的,如果各层命名空间下没有重名的类,你甚至没有使用完全限定名的必要。比如上面的代码里可以使用短名进行查找。

Type tt=classesFirstOrDefault(t=>tName="ORM_001_"+properties[i]);

刚看到上面的回答,这里我要肯定的告诉你,不管你是用文件方式还是项目引用方式,都不可能使用TypeGetType静态方法获取另一个程序集中的类型,必须在对方的程序集上进行查找!

如果你非要使用TypeGetType静态方法获取其他程序集中的类型,可以使用其的一种重载:

public static SystemType GetType(string typeName, SystemFunc<AssemblyName,Assembly> assemblyResolver, SystemFunc<Assembly,string,bool,Type> typeResolver)

该静态方法要求你提供自己的程序集名称解析器和类型名称解析器,非特殊情况不推荐使用。该方法是为了在多个程序集中同时查找多个类型而被微软提供的。

以上就是关于C# 反射获取属性的时候如何只获取该类的属性,我不想取得父类的属性。全部的内容,包括:C# 反射获取属性的时候如何只获取该类的属性,我不想取得父类的属性。、怎么通过反射获得实体类中List类型的对象的各个属性、C#通过反射获取不同命名空间下的类(属性和方法)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9760833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存