Если у объекта есть Единственная ответственность , может быть допустимо следующее:
public class Person
{
public string Name;
public DateTime DateOfBirth;
private IStorageService _storageService;
public Person(IStorageService storageService)
{
_storageService = storageService
}
public void Save()
{
_storageService.Persist(this);
}
}
т.е. использование предоставленного сотрудника (что также помогает остановить анемию модели предметной области).
Или это должно быть так:
public class Person
{
public string Name;
public DateTime DateOfBirth;
public Person()
{
}
}
public class StorageService
{
public void Persist(Person p)
{
}
}