Нам нужно напечатать документы Word, в которых есть закладки. У нас также есть доменные объекты, свойства которых отображаются на одну (или несколько) закладок в документах Word. Прямо сейчас, чтобы проверить, у нас есть оператор switch (foo является сущностью домена):
private static string GetValueForBookmark(Bookmark bookmark, Foo foo)
{
// ToDo: Un-switch this.
switch (bookmark.Name)
{
case "dist":
return foo.Measurment.Distance;
case "serialNo":
return foo.SerialNumber;
default:
return string.Empty;
}
}
Я бы не хотел добавлять атрибуты к свойствам Foo в фреймворке. Это кажется грязным и неправильным, поскольку доменные сущности не должны знать обо всех этих одноразовых потребностях приложений.
Одна из идей заключается в создании сопоставления имен закладок со свойствами сущностей домена. Возможно, создайте перечисление, которое представляет имена закладок, затем добавьте атрибуты к этим элементам перечисления, которые представляют свойства сущности домена. Атрибуты должны будут указывать эти свойства, и я не знаю, можно ли это сделать. Можно ли здесь использовать деревья выражений?
Есть ли другой вариант? Я просто хочу отобразить свойства объекта домена на строковые литералы.
Каков наилучший способ решить эту проблему?