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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- ma dove vai se il var non ..., il 19 luglio 2006 alle 14:47
- DLINQ volume due, il 15 settembre 2005 alle 15:43
- DLinq mi piace , il 15 settembre 2005 alle 10:19
- ancora stringhe, il 21 dicembre 2004 alle 15:24
- in parziale rettifica o precisazione di quanto detto(...), il 13 dicembre 2004 alle 08:00