1
私はValue Injectorを使用してASP.NET MVCプロジェクトのマッピングを管理しています。ドメインは、dbの標準メトリック単位として格納された長さ測定の概念を持ち、サービス層までの小数点の値として公開されています。Value Injectorを使用してターゲットプロパティの属性を検査するにはどうすればよいですか?
UIの長さのレンダリングは、測定対象、ユーザーカルチャなどによって異なります。ビューモデルタイプのプロパティに関する属性で示されるコンテキストについてのヒント。 Value Injectorを使用して、注入時にこれらの属性を検査し、ソースプロパティが10進数で、ターゲットプロパティが上記の属性の1つで飾られた文字列である場合、適切にフォーマットされた文字列を表示します。
namespace TargetValueAttributes
{
public class Person
{
public decimal Height { get; set; }
public decimal Waist { get; set; }
}
public class PersonViewModel
{
[LengthLocalizationHint(LengthType.ImperialFeetAndInches)]
[LengthLocalizationHint(LengthType.MetricMeters)]
public string Height { get; set; }
[LengthLocalizationHint(LengthType.ImperialInches)]
[LengthLocalizationHint(LengthType.MetricCentimeters)]
public string Waist { get; set; }
}
public enum LengthType
{
MetricMeters,
MetricCentimeters,
ImperialFeetAndInches,
ImperialInches
}
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class LengthLocalizationHintAttribute : Attribute
{
public LengthType SuggestedLengthType { get; set; }
public LengthLocalizationHintAttribute(LengthType suggestedLengthType)
{
SuggestedLengthType = suggestedLengthType;
}
}
public class LengthLocalizationInjection : FlatLoopValueInjection<decimal, string>
{
protected override void Inject(object source, object target)
{
base.Inject(source, target);//I want to be able to inspect the attributes on the target value here
}
protected override string SetValue(decimal sourceValues)
{
var derivedLengthType = LengthType.MetricMeters;//here would be even better
return sourceValues.ToLength(derivedLengthType);//this is an extension method that does the conversion to whatever the user needs to see
}
}