ドメイン駆動開発_フォルダー構成編_#41_MeasureValueの作成

当サイトではアフィリエイト広告を利用しています。

NDDD

前回までで,MeasureDateまでValueObject化したので,今回は,MeasureValueのValueObject化を行います。

MeasureValueクラスの追加

ValueObjectsフォルダーに新しいクラスを作成し,名前を「MeasureValue」とします。

MeasureValueのコーディング

作成したMeasureValueに次のようにコーディングします。

using System;

namespace NDDD.Domain.ValueObjects
{
    public sealed class MeasureValue : ValueObject
    {
        public MeasureValue(float value)
        {
            Value = value;
        }

        public float Value { get; }

        public string DisplayValue => Math.Round(Value, 2) + "℃";


        protected override bool EqualsCore(MeasureValue other)
        {
            return this.Value == other.Value;
        }
    }
}

MeasureEntityの修正

using NDDD.Domain.ValueObjects;
using System;

namespace NDDD.Domain.Entities
{
    public sealed class MeasureEntity
    {
        public MeasureEntity(int areaId, DateTime measureDate, float measureValue)
        {
            AreaId = new AreaId(areaId);
            MeasureDate = new MeasureDate(measureDate);
            MeasureValue = new MeasureValue(measureValue);
        }

        public AreaId AreaId { get; }
        public MeasureDate MeasureDate { get; }
        public MeasureValue MeasureValue { get; }
    }
}

AreaIdの時と同じように,MeasureValueプロパティもMeasureValue型にします。

LatestViewModelの変更

        public void Search()
        {
            var measure = _measureRepository.GetLatest();
            AreaIdText = measure.AreaId.DisplayValue;
            MeasureDateText = measure.MeasureDate.DisplayValue;
            MeasureValueText = measure.MeasureValue.DisplayValue;
        }

LatestViewModelで使用しているMeasureValueTextを設定する場所をDisplayValueを設定するように変更します。

動作確認

今まで通り,値が編集されていることが確認できます。