Вы можете создать свое решение, используя (простые старые объекты C #) POCO и менеджеры.
Таким образом вы отделяете бизнес-логику от объектов-значений.
Чтобы он выглядел "красиво", вы можете пометить ваши методы с помощью модификатора (this) для параметров, чтобы затем использовать эти методы в качестве методов расширения.
Пример может прояснить это:
Объект значения местоположения:
public class Location
{
public string City { get; set; }
public string State { get; set; }
}
Менеджер местоположений:
public static class LocationManager
{
public static bool IsWashington(this Location location)
{
return location.State == "WA";
}
}
Теперь методы расширения будут отображаться иначе, чем стандартные свойства / методы объекта.
Метод "IsWashington" можно вызвать двумя способами
Location location = new Location { State = "WA" };
LocationManager.IsWashington(location);
OR
Location location = new Location { State = "WA" };
location.IsWashington();
Теперь у вас есть разделение бизнес-логики и ценностных объектов, но вы все равно можете иметь "симпатичные" вызовы методов.
Если вы чувствуете, что ваши коллеги-разработчики (или вы :)) будут злоупотреблять частью метода расширения, просто не используйте ее.