ამ პოსტში მინდა ვისაუბრო იმ მოვლენისა და კლასების გამოყენებაზე, რომელიც განვსაზღვრე წინა პოსტში და მოვახდინო მათი ინტეგრირება მხოლოდ ერთი მარრტივი კლასის დახმარებით, რაც მთლიანობაში აზრობრივად დაასრულებს მოვლენებს, ხოლო მესამე ნაწილი დაეთმობა სუსტ მოვლენებს (Weak Events).
კლასი User.cs გამოიყენება, როგორც მოვლენის მსმენელი.
ეს კლასი იწერს JobDealer.cs ის მოვლენას და განსაზღვრავს ახალ მეთოდს, NewJobIsAvaiilable,
რომელიც აკმაყოფილებს EventHandler<JobInfoEventArgs>
ტიპის დელეგატის ყველა
მოთხოვნას, კერძოდ, აქვს ორი პარამეტრი: ობიექტი და JobInfoEventArgs
public class User
{
private string
name;
public
User(string Name)
{
this.name
= Name;
}
public void
NewJobIsAvailable(object sender, JobInfoEventArgs
e)
{
Console.WriteLine("{0}:
job {1} is new and available", name, e.Job);
}
}
ახლა მოვლენის გამომქვეყნებელი
და მისი გამომწერი უნდა დაუკავშირდნენ ერთმანეთს რამენაირად. ამის გაკეთება კი შესაძლებელია
NewJobInfo მოვლენის გამოყენებით, რომელიც განსაზღვრულია JobDealer.cs ში. გამოვიყენებ +=
ოპერატორს გამოწერის შესასრულებლად.
მოცემულია სანიმუშო კოდი, ქვემოთ
static void
Main(string[] args)
{
var
dealer = new JobDealer();
var
Misha = new User("MISHA");
dealer.NewJobInfo +=
Misha.NewJobIsAvailable;
dealer.NewJob("Manager");
var
Giorgi = new User("GIORGI");
dealer.NewJobInfo +=
Giorgi.NewJobIsAvailable;
dealer.NewJob("Developer");
Console.ReadKey();
}
პროგრამის გაშვების შემთხვევაში
გვექნება
ყოველი ახალი სამსახურის დამატებისას, ის მომხმარებელი, რომელსაც
გამოწერილი აქვს მოვლენა, მისდის შეტყობინება ახალი სამსახურის შესახებ, როდესაც ხდება
მოვლენის გააქტიურება.
No comments:
Post a Comment