반응형
소스 코드
Item.cs
namespace 의존_관계
{
public class Item
{
string text;
public string Text
{
get
{
return text;
}
set
{
text = value;
BindingSystem.ChangedValue(this);
}
}
public Item(string text)
{
this.text = text;
}
public override string ToString()
{
return text;
}
}
}
ItemControl.cs
using System;
namespace 의존_관계
{
public class ItemControl
{
bool isshow;
public Item Item
{
get;
set;
}
public string Text
{
get
{
return Item.Text;
}
}
public ItemControl(Item item)
{
Item = item;
isshow = false;
BindingSystem.ValueChangedEventHandler += BindingSystem_ValueChangedEventHandler; //이벤트 핸들러 등록
}
private void BindingSystem_ValueChangedEventHandler(object sender, ValueChangedEventArgs e)
{
if((e.Item == Item)&&isshow)
{
Show();
}
}
public void Show()
{
isshow = true;
Console.WriteLine(Text);
}
}
}
ValueChangedEventArgs.cs
using System;
namespace 의존_관계
{
public delegate void ValueChangedEventHandler(object sender, ValueChangedEventArgs e);
public class ValueChangedEventArgs : EventArgs
{
public Item Item
{
get;
private set;
}
public string Text
{
get
{
return Item.Text;
}
}
public ValueChangedEventArgs(Item item)
{
Item = item;
}
}
}
BindingSystem.cs
namespace 의존_관계
{
public static class BindingSystem
{
public static event ValueChangedEventHandler ValueChangedEventHandler = null;
public static void ChangedValue(Item item)
{
if(ValueChangedEventHandler != null)
{
ValueChangedEventArgs e = new ValueChangedEventArgs(item);
ValueChangedEventHandler(null, e);
}
}
}
}
Program.cs
//http://ehpub.co.kr
//실습으로 다지는 C#
//의존 관계 실습
namespace 의존_관계
{
class Program
{
static void Main(string[] args)
{
Item item = new Item("언제나 휴일");
ItemControl ic = new ItemControl(item);
ic.Show();
item.Text = "행복";
item.Text = "Hello";
}
}
}
실행 결과
언제나 휴일
행복
Hello
반응형
'C# > 실습으로 다지는 C#' 카테고리의 다른 글
19. 택배 요금 계산 시뮬레이션 C# (0) | 2020.04.12 |
---|---|
[018] C# 실현 관계(Realization) 실습 (0) | 2020.04.10 |
[015] C# 연관 관계(Association) 실습 – 의사, 약사 (0) | 2020.04.09 |
[014] C# 직접 연관 관계(Direct Association) 실습 – 계산기, 사각형 (0) | 2020.04.09 |
[013] C# 구성(Composition) 관계 실습 - 쇼핑 센터, 상품 (0) | 2020.04.08 |