not - ¿Es posible fusionar dos atributos C#en uno?
maxlength attribute c# (1)
Como dijo Florian: así no funciona
Un atributo es al final una clase que se deriva de un atributo de clase base. Lo que intenta hacer es crear un nuevo atributo (clase), que combine las propiedades de ambos atributos Column y StringLength.
Esto no es posible, porque tendríamos que crear un nuevo atributo, que se deriva de ambos atributos juntos, pero eso no es posible, ya que .NET no permite la herencia múltiple.
También es una cuestión de estilo de código. Si pudieras hacer lo que deseas, ocultarías el comportamiento original previsto al desarrollador. Tendría que abrir el nuevo atributo y darse cuenta, es una combinación de otros dos. Todo lo que ofusca el código es comúnmente considerado mal comportamiento (excepto que mejora la legibilidad, por supuesto)
Estoy usando el código EF6 primero en uno de los proyectos de mi empresa. En el proyecto, hay un par de propiedades en las clases de POCO que almacenan información de fecha persa (por ejemplo, 1394/01/24). En nuestra base de datos, estos valores se almacenan en columnas "CHAR (10)".
Yo uso propiedades de cadena para almacenar estos valores en mis POCOs y tengo que adjuntar "ColumnAttribute" y "StringLengthAttribute" a cada propiedad de fecha:
public class MyPoco
{
...
[Column(TypeName="CHAR")]
[StringLength(10, MinimumLength=10)]
public string MyDate {get; set;}
...
}
Tengo curiosidad por saber si existe una manera de crear un atributo personalizado que combine los comportamientos de esos dos atributos para poder hacer algo como esto:
public class MyPoco
{
...
[DateColumn]
public string MyDate {get; set;}
...
}
donde "DateColumnAttribute" aplica lo que hacen esos dos atributos. Definitivamente puede reducir el tipeo.