prendiamo una semplice intefaccia
public interface IBasketItem
{
string Name{get;set;}
decimal Price{get;set;}
DateTime AddedDate{get;set;}
}se provate a mettere un qualsiasi modificatore d'accesso davanti al metodo riceverete (giustamente) un errore, a prima vista sembra che sia possibile solo definire menbri pubblici in un interfaccia, facciamo un esempio
public struct BasketItem : IBasketItem
{
...
private decimal price;
...
public decimal Price
{
get { return price; }
set
{
if(value < 0) throw new ArgumentException("Il prezzo deve essere maggiore di 0");
price = value;
}
}
}in questa implementazione se sostituite public con private riceverete un errore di menbro non implementato, se volte in qualche modo "nascondere" il membro Price dovrete ricorrere all'implementazione esplicita dell interfaccia.
dichiarare eplecitamente un interfaccia consiste nella qualificazione completa del suo nome
decimal IBasketItem.Price
{
get { return price; }
set
{
if(value < 0) throw new ArgumentException("Il prezzo deve essere maggiore di 0");
price = value;
}
}questo rende difatto inacessibile il mebro al difuori della struttura, e all'interno della stessa sarà possibile accedevi solamente tramite reference di interfaccia.
usare l'implementazione esplicta non solo è comodo per rendere inacessibile un menbro al difuri di una classe o struttura ma risolve le abiguità nel caso si implementino più interfacce che presentano nomi dei mebri uguali
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Stampa
Download 


nostromo