Interfejsy zdefiniowane przez MSDN "zawierają tylko podpisy metod, delegatów lub zdarzeń." Ponieważ jednak właściwości nie są niczym więcej niż syntaktycznym cukrem dla metody get i set, są również dozwolone w interfejsach. Moje pytanie brzmi - czy jest jakaś sytuacja, w której właściwe jest definiowanie właściwości w interfejsie, czy powinniśmy trzymać się scenariuszy opisanych przez MSDN?Czy interfejsy powinny definiować właściwości?
Odpowiedz
Myślę, że właściwości są całkowicie dopuszczalne w interfejsach.
Tak jak powiedziałeś, tak naprawdę są to metody get, set lub get i set. Wiele interfejsów w Framework definiują właściwości, takie jak IAsyncResult i IWebProxy.
artykuł, który odwołuje się do stwierdza również:
interfejs może być członkiem nazw lub klasy i może zawierać podpisy następujących Członków:
- Metody
- Właściwości
- Indexery
- Wydarzenia
@Simon: tak, teraz widzę. –
Tak, interfejs powinien określić właściwości, gdy jest to naprawdę w potrzebie. Przypuśćmy to. Istnieje interfejs użytkownika IUser, który zdefiniował właściwość "Nazwa", a następnie można z niego korzystać bez obaw o to, czy obiekt nie zaimplementował tej właściwości.
public void main()
{
IUser u = User.GetUser("id");
string name = u.Name;
}
- 1. Czy biblioteki Androida powinny definiować parametr targetSdkVersion?
- 2. Maszynopis: Jak definiować interfejsy dla obiektów zagnieżdżonych?
- 3. F # interfejsy i właściwości
- 4. Czy IBOutlety powinny być ivars lub właściwości?
- 5. Tylko właściwości powinny być usunięte
- 6. może/czy parametry właściwości iCal powinny zostać zmienione?
- 7. Czy klasa PHP Extended dziedziczy również interfejsy?
- 8. AutoFixture i interfejsy
- 9. CA1819: Właściwości nie powinny zwracać tablic - Jaka jest właściwa alternatywa?
- 10. Serializacja interfejsy
- 11. Interfejsy VB.NET
- 12. Standardowe interfejsy
- 13. Domyślne metody i interfejsy rozszerzające inne interfejsy
- 14. Czy lepiej jest definiować obrazy w bezpośrednim html lub css?
- 15. Czy można definiować tablice ciągów w plikach zasobów .resx?
- 16. czy interfejsy należą do plików własnych
- 17. Czy dostępne są interfejsy API Sky Map?
- 18. Czy adnotacje całkowicie zastępują interfejsy znaczników?
- 19. Ogólne i nietypowe interfejsy
- 20. "Nowicjusz" Interfejsy
- 21. Interfejsy prywatne
- 22. Czy jednostki miary powinny być zlokalizowane?
- 23. Czy żądania aktualizacji mysqli powinny zwracać wynik?
- 24. Czy konteksty danych powinny być statyczne?
- 25. Czy języki programowania powinny być intuicyjne?
- 26. Czy tajemnice API powinny zostać zahartowane?
- 27. Czy klasy warstwy usług powinny być pojedynczymi?
- 28. Czy obiekty enum powinny być bezpaństwowcami?
- 29. Czy metatagi powinny być kodowane w HTML?
- 30. Jak definiować wartości stałe - najlepsza praktyka
Dziękuję, Reed. W takim przypadku, czy te właściwości powinny mieć charakter podstawowy (nieokreślony przez użytkownika)? Powodem, dla którego pytam, jest to, że jeśli na przykład zdefiniujesz go jako typ domeny, możesz otrzymać odwołanie cykliczne. –
@ Otávio Décio: Należy pamiętać o celu interfejsu. Interfejs definiuje kontrakt. Jeśli nieruchomość jest wymagana do umowy, to jest w porządku. Nie powinieneś kończyć się odwołaniami cyklicznymi, ponieważ właściwości nie powinny być typami bezpośrednio implementującymi interfejs, ale raczej podstawowymi typami struktury lub typami, które same stanowią część "umowy". IWebProxy (link powyżej) jest dobrym przykładem - ma właściwość Credentials, która jest z ICredentials. Jest to część umowy, ale niezbędny jest typ "zdefiniowany przez użytkownika" (dla tej biblioteki). –
tylko po to, aby upewnić się, że właściwości zdefiniowane w interfejsach powinny być nieokreślonymi przez użytkownika typami betonu lub typami interfejsów (zdefiniowanymi przez użytkownika lub nie). –