Supponendo che il seguente entità del dominio:Standard Methods vs Estensioni Metodi
public enum Role
{
User = 0,
Moderator = 1,
Administrator = 2
}
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public Role Role { get; set; }
}
ho bisogno di sapere se l'utente può eseguire l'azione "Modifica". Così ho 2 soluzioni:
Creare un metodo CanEdit all'interno dell'entità utente
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public Role Role { get; set; }
public bool CanEdit()
{
return Role == Role.Moderator || Role == Role.Administrator;
}
}
creare un metodo di estensione CanEdit per il tipo di utente:
public static class UserExtensions
{
public static bool CanEdit(this User user)
{
return user.Role == Role.Moderator || user.Role == Role.Administrator;
}
}
Entrambi soluzione funziona, ma la domanda è QUANDO usi i metodi standard contro i metodi di estensione?
+1, inoltre, utilizzare i metodi di estensione su Interfacce è una buona pratica. –
+1. I metodi di estensione sono inoltre preziosi quando si tratta di interfacce. –
@Aaronaught: Ok, sono d'accordo, ma perché Microsoft .NET Framework Team implementa i Metodi di estensioni sulle proprie classi di tipi? Perché non implementare direttamente le funzionalità all'interno delle classi? –