Pregunta

Supongamos que tengo un objeto de negocios que tiene algunas propiedades que deberían ser solo de lectura.Por ejemplo:

public class Order
{
     ...
     public DateTime OrderDate { get; set; }
     ...
     public decimal OrderTotal { get; set; }
}

También supongamos que el OrderTotal es un valor calculado devuelto por un PROC almacenado que no se puede configurar por la aplicación (mientras que el pedido puede).Normalmente, simplemente escribiría el OrderTotal sin un setter público:

public decimal OrderTotal { get; private set; }

Sin embargo, si lo hago, Bltoolkit ya no establecerá el valor de esta propiedad.También ya intenté escribir esto como una propiedad interna y definiendo a Bltoolkit como asamblea de un amigo (InternalsVisibleTo("BLToolkit.4, PublicKey=xyz")) sin éxito.

¿Cómo puedo escribir una propiedad sin un setter público que aún puede ser poblado por Bltoolkit?

¿Fue útil?

Solución

There is a Storage Property on the MapField Attribute, maybe that will help

    public class Class1
    {
        int _int32 = 0;
        [MapField(Storage = "_int32")]
        public int Int32
        {
            get { return _int32; }
        }
    }

Otros consejos

I don't think you can do that, but if I understand you correctly you don't need it. If OrderTotal is returned from stored procedure than it is just fine if you leave it as it is. Unless Order class is representing the actual Order table in the database, you won't have any problem if you accidentally update OrderTotal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top