Mam interfejs IResourcePolicy
zawierający właściwość Version
. Muszę zaimplementować tę właściwość, która zawiera wartość, kod napisany na innych stronach:
IResourcePolicy irp(instantiated interface)
irp.WrmVersion = "10.4";
Jak mogę wdrożyć nieruchomość version
?
public interface IResourcePolicy
{
string Version
{
get;
set;
}
}
Odpowiedzi:
W interfejsie określasz właściwość:
W klasie implementującej musisz to zaimplementować:
To wygląda podobnie, ale to coś zupełnie innego. W interfejsie nie ma kodu. Po prostu określasz, że istnieje właściwość z funkcją pobierającą i ustawiającą, cokolwiek zrobią.
Na zajęciach faktycznie je wdrażasz. Najkrótszym sposobem na to jest użycie tej
{ get; set; }
składni. Kompilator utworzy pole i wygeneruje dla niego implementację pobierającą i ustawiającą.źródło
Version
jest to publiczne w klasie? Ahh, widzę mój problem: jeśli zaimplementujesz interfejs bezpośrednio (np.IResourcePolicy.Version
Nie możesz określić, czy jest on publiczny.Masz na myśli to?
źródło
Interfejsy nie mogą zawierać żadnej implementacji (w tym wartości domyślnych). Musisz przełączyć się na klasę abstrakcyjną.
źródło
Prosty przykład użycia właściwości w interfejsie:
źródło
Odpowiedź J.Random Codera i pole inicjalizacji wersji.
źródło
Do zainicjowania właściwości należy użyć klasy abstrakcyjnej. Nie możesz zainicjalizować w Inteface.
źródło