Mam taka potrzebe aby do klasy Appoitment (z Calendar) dodac dwa pola. Chodzi o to zebym mogl do owych appoitmentow dolaczac jeszcze informacje w 2 polach. Musi to byc klasa appoitment gdyz pewna kontrolka musi otrzymac dane tego wlasnie typu.
Jak to zrobic???
Jakiej jest przestrzeni nazw ta klasa?
Zdefiniować swoją klasę dziedziczącą po tym Appointment
?
generalnie to jest M$ klasa Calendar.Appoitment
(przestrzen Calendar)
ale to w sumie jest bez znaczenia po prostu nie wiem jak ja rozszerzyc (kazda inna powiedzmy "superklase") o dodatkowe pola (nie metody).
Nie moge zrobic klasy potomnej bo pewien komponent przyjmuje jako parametr jedynie typ Appoitment.
loocaszek napisał(a)
Nie moge zrobic klasy potomnej bo pewien komponent przyjmuje jako parametr jedynie typ Appoitment.
Przyjmuje Appointment, a nie przyjmie obiektu klasy dziedziczącej? Chciałbym to zobaczyć. ;]
private void dayViewPlan_ResolveAppointments(object sender, ResolveAppointmentsEventArgs args)
{
List<Appointment> m_Apps = new List<Appointment>();
foreach (Appointment m_App in m_Appointments)
if ((m_App.StartDate >= args.StartDate) &&
(m_App.StartDate <= args.EndDate))
m_Apps.Add(m_App);
args.Appointments = m_Apps;
args.Appoitments = lista obiektow typu appoitment inaczej sie wywala bledem incompatible
oczywiscie probowalem z lista obiektow typu klasa potomna od appoitment... :-)
Nie mogę znaleźć jakoś tego Appointment na msdn - definicji klasy. Jeżeli nie jest sealed to spokojnie przejdzie coś takiego:
class MyAppointment : Appointment
{
public int MyProperty {get;set;}
}
private void dayViewPlan_ResolveAppointments(object sender, ResolveAppointmentsEventArgs args)
{
List<Appointment> m_Apps = new List<Appointment>();
m_Apps.Add (new MyAppointment() { StartDate = DateTime.Now, MyProperty = 5})
args.Appointments = m_Apps;
}
Otrzymuje blad jak w zalaczonym screenie
Spójrz na mój kod i potem spójrz na swój, a następnie znów na mój. Znajdź różnicę.
no teraz widze ;-)
ale jeszcze nie zamykam watku zanim nie zaaplikuje
dzieki!
Tak to jest, jak się człowiek bierze za GUI, a wcześniej olał sobie postawy programowania, w tym wypadku dziedziczenie.
dzieki raz jeszcze , masz calkowita racje.... :-)
chociaz mam maly problem z wyciagnieciem teraz tych danych bo jak chce wydostac ten pola z listy obiektow typu Appoitment
to moge wyciagnac jedynie skladowe z typu Appoitment.... czyli moge tam cos wlozyc ale juz nie wyciagne.... :-|
Co jest bardziej prawdopodobne - ktoś spieprzył język programowania tak, że nie da się przeprowadzić tak banalnej operacji, czy to, że nie przeczytałeś książki o podstawach języka i nie wiesz jak to zrobić?
Rzutuj na klasę pochodną np. operatorem as
, a następnie sprawdzaj czy wynik nie jest null
. Albo najpierw sprawdzaj faktyczny typ obiektu z listy używając operatora is
, a potem zwyczajnie rzutuj na klasę pochodną.
wlasnie na rzutowanie wpadlem ale jeszcze nie wiem co z tego wyjdzie, no ucze sie dopiero a z czyjas pomoca idzie szybciej - dzieki ! :-)