猿问

c# Attribute 反射问题

public abstract class TotalTestAttribute

{

[Length(50)]

[Cluom]
public string name { get; set; }
public string sex { get; set; }
}

上面只是我随便写的一个属性例子

我想我的model 想个 Attribute,然后通过反正这个model,获取这个Attribute,然后判断有这个Attribute怎么,没有又怎么样

但是如果有多个不相同 Attribute  作用的同一个属性,循环判断显然不行,想到子类都继承至一个父类,然后父类做好所有的的功能,每个子类只实现父类部分功能,但是怎么反射会这个父类呢?

或者说这个想法就不行,望高手指点?

其实我的真正的想法就是写个方法,传进一个model后,就自动生成sql语句,但是这个model我想添加一些标记,比如类名是代表表名,但是也可以自定 重命名的 Attribute  ,比如属性名可以加 表示这个属性是否是表的列名,重命名列,这列的长度和类型能, 我想到了mvc中Attribute  ,一个属性上有很多的Attribute  ,他们的后面机制是怎么处理的?


qq_遁去的一_1
浏览 504回答 2
2回答

繁星淼淼

多个Attribute,当然就循环处理了,只是循环里的的实现模式有技巧,比如职责链、命令模式,这样就可以把逻辑理的很清楚。取父类类型可以通过 GetBaseType 来取。鉴于你要实现的完整功能,你可以直接使用EF的Code First模式,如果要知道最佳的实现方式,你可以把EF的源代码反编译出来查看下。

小唯快跑啊

GetCustomAttributes(Type,bool) 可以指定类型获取自定义属性,如果获取父类可以先获取父类型。 循环没有问题,反射之后缓存起来不要每次都反射就行。
随时随地看视频慕课网APP
我要回答