나는 C#에서 (IExtension, IExtensibleObject) 인터페이스를 사용하여 확장 가능한 개체 패턴에 대해 탐구하고, 나는에서 UTC로 날짜를 변환하는 매우 간단한 예제와 함께 제공되는 지역 및 그 반대 :IExtension : 확장 가능 객체 패턴 : 어떻게 작동합니까?
public class BaseObject : IExtensibleObject<BaseObject>
{
private DateTime _startDate;
private ExtensionCollection<BaseObject> _extensions;
public DateTime StartDate
{
get { return _startDate; }
set { _startDate = value; }
}
public BaseObject()
{
StartDate = DateTime.Now;
_extensions = new ExtensionCollection<BaseObject>(this);
}
#region IExtensibleObject<BaseObject> Members
public IExtensionCollection<BaseObject> Extensions
{
get
{
return _extensions;
}
}
#endregion
}
public class DateTimeConverterExtension : IExtension<BaseObject>
{
private BaseObject _owner;
#region IExtension<BaseObject> Members
public void Attach(BaseObject owner)
{
_owner = owner;
_owner.StartDate = owner.StartDate.ToUniversalTime();
}
public void Detach(BaseObject owner)
{
_owner.StartDate = _owner.StartDate.ToLocalTime();
}
#endregion
}
class Program
{
static void Main(string[] args)
{
BaseObject obj = new BaseObject();
Console.WriteLine("Local Time: "+obj.StartDate);
obj.Extensions.Add(new DateTimeConverterExtension());
Console.WriteLine("UTC: "+obj.StartDate);
DateTimeConverterExtension ext = obj.Extensions.Find<DateTimeConverterExtension>();
obj.Extensions.Remove(ext);
Console.WriteLine("Local Time: "+obj.StartDate);
}
}
출력 :
지역 시간 : 2009년 4월 13일 오전 11시 9분 19초
UTC : 2009년 4월 13일 오전 5시 39분 19초
지역 시간 : 2009년 4월 13일 오전 11시 9분 19초
계속하려면 아무 키나 누르십시오. . .어떻게 닷넷 프레임 워크는 "첨부"와 IExtensionCollection.Add 및 IExtensionCollection.Detach 방법은 프로그램에 의해 호출된다 "분리"호출 않습니다
은 그래서 질문은, 작동? 여기에 누락 된 내부 세부 정보를 입력하십시오.