根据here,在调用SELECT SUM( t.cnt ) FROM(
SELECT
COUNT(pac.strid_paciente) AS cnt
FROM tb_paciente AS pac
LEFT JOIN tb_entidades AS ent
ON pac.strid_entidad = ent.strid_entidad
LEFT JOIN tb_escolaridad AS esc
ON pac.strid_escolaridad = esc.strID_Escolaridad
LEFT JOIN tb_etnia AS etn
ON pac.strid_etnia = etn.strID_Etnia
LEFT JOIN tb_raza AS raza
ON pac.strid_raza = raza.strid_raza
LEFT JOIN tb_religion AS rel
ON pac.strid_religion = rel.strid_religion
LEFT JOIN tb_ocupacion AS ocu
ON pac.strOfi_Paciente = ocu.strID_Ocupacion
LEFT JOIN tb_consulta AS con
ON pac.strid_paciente = con.strid_paciente
LEFT JOIN tb_usuarios AS usu
ON usu.strid_usuario = con.strid_medico
GROUP BY pac.strid_paciente
) AS t
方法之前,属性构造函数不会运行。
这将实例化拥有该类的每个属性。
强制构造某个自定义属性的最有效方法是什么?在修改类时,我只想实例化特定属性,而不是所有属性。
GetCustomAttributes()
答案 0 :(得分:0)
您误解了属性是什么。属性是元数据,它们作为对象的一种配方存储在程序集中:
那就是它。不多也不少。
当您在成员上调用GetCustomAttributes
时,运行时将使用存储在元数据中的配方来实例化此成员的属性,并处理您。
每次调用都会获得一个新实例,因为属性实例只是类,因此可变。这样做可确保您获得真正的元数据。如果您遇到性能问题,请自行缓存,并确保不要更改它们。
答案 1 :(得分:0)
找到答案。 GetCustomAttributes能够按类型获取某些属性。下面的代码不会实例化RegularAttribute。它需要在基本构造函数或Unity DI中的`[InjectionMethod]中调用。
MethodInfo[] methods = (typeof(MyClass)).GetMethods();
foreach (var method in methods)
{
var attribute = method.GetCustomAttributes(typeof(SpecialAttributeAttribute), false);
}
欢迎更有效的答案。