Dzień dobry,
A więc muszę napisać prosty program w którym mam napisany swój jakiś atrybut, DekorujAttribute i klasę, załóżmy Pracownik. DekorujAttribute jest tylko dla klas i klasa Pracownik wykorzystuje ten atrybut.
Teraz w klasie Program (tej domyślnej) piszę metodę statyczną Wyświetl(object o) i ma ona zwracać to co zwraca w klasie Pracownik metoda ToString tylko że w nawiasach (takie udekorowanie).
Problem mój polega na tym że nie rozumiem do końca atrybutów, (ostatnie 4 godziny spędziłem szukając jakieś pomocy na ten temat i niczego nie znalazłem co by mi to jasno jakoś tłumaczyło jak to zaimplementować) a sedno tkwi w tym iż ta metoda Wyświetl ma działać/wyświetlać to udekorowanie tylko dla obiektów klasy z atrybutem DekorujAttribute. Poniżej wstawiam kod.
[AttributeUsage(AttributeTargets.Class , AllowMultiple = true)]
public class DekorujAttribute : Attribute
{
bool b;
public DekorujAttribute(bool bb)
{
this.b = bb;
}
}
[DekorujAttribute(true)]
class Pracownik
{
string imię;
string nazwisko;
int staż_pracy;
public Pracownik(string i, string n, int s)
{
this.imię = i;
this.nazwisko = n;
this.staż_pracy = s;
}
public override string ToString()
{
return imię.ToString() + " " + nazwisko.ToString() + " Staż pracy: " + staż_pracy.ToString();
}
}
class Programista : Pracownik
{
string specjalizacja;
public Programista(string i, string n, int s, string spec) : base(i, n, s)
{
this.specjalizacja = spec;
}
}
class Student
{
string imię;
string nazwisko;
int staż_pracy;
public Student(string i, string n, int s)
{
this.imię = i;
this.nazwisko = n;
this.staż_pracy = s;
}
public override string ToString()
{
return imię.ToString() + " " + nazwisko.ToString() + " Staż pracy: " + staż_pracy.ToString();
}
}
class Program
{
public static string Wyświetl(object o)
{
return "'"+o.ToString()+"'";
}
static void Main(string[] args)
{
Pracownik p = new Pracownik("aaa", "aaa", 10);
Student s = new Student("bbb", "bbb", 15);
//tu spoko ma działać i działa :
Console.WriteLine(Wyświetl(p));
//dla studenta ma nie działać ale działa:
Console.WriteLine(Wyświetl(s));
Console.ReadKey();
}
}
}
Nazwy są takie jakie są ponieważ jest to rzeczywiście jedna z rzeczy w projekcie na zaliczenie, a jest to sprawdzane programem i muszą być identyczne z tym co nam podadzą :x