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

10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
nostromo