Question

Supposons que j'ai un objet métier qui a certaines propriétés qui devraient être en lecture seule.Par exemple:

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

Supposons également que OrderTotal est calculé de la valeur retournée par une procédure stockée qui ne peut pas être réglé par l'application (alors que la date de Commande peut).Normalement, je devrais écrire simplement la OrderTotal sans un public setter:

public decimal OrderTotal { get; private set; }

Cependant, si je le fais BLToolkit n'aura plus de définir la valeur de cette propriété.J'ai aussi déjà essayé d'écrire cela comme une propriété interne et la définition de BLToolkit comme un ami de l'assemblée (InternalsVisibleTo("BLToolkit.4, PublicKey=xyz")), sans succès.

Comment puis-je écrire une propriété sans un public setter qui peuvent encore être remplis par BLToolkit?

Était-ce utile?

La solution

Il y a un Stockage de Propriété sur le MapField Attribut, peut-être, qui aide

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

Autres conseils

Je ne pense pas que vous pouvez le faire, mais si je vous comprends bien vous n'en avez pas besoin.Si OrderTotal est retourné à partir de la procédure stockée que c'est très bien si vous avez le laisser tel qu'il est.À moins que l'Ordre de la classe est représentant de l'Ordre réel de la table dans la base de données, vous n'aurez pas de problème si vous avez accidentellement mise à jour OrderTotal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top