IConvertible
과 관련된 문제가 있습니다. 즉, DateTimeOffset
이 IConvertible
으로 구현 된 경우 문제가 없습니다.수정 불가능한 유형의 IConvertible 기능 구현
도로를 닫을 수 있도록 인터페이스를 구현하는 데 확장 메서드를 사용할 수 없습니다. DateTimeOffset 구조체는 부분적이지 않으므로 확장 할 수 없습니다.
일부 MSDN 설명서를 읽으므로 TypeCode
열거 형을 발견했습니다. IConvertible이 제대로 작동하는 데 필요한 것으로 보입니다. 어떻게 구현할 것 DateTimeOffset- : 그리고 내 실망 열거는 DateTime
및 TimeSpan
(즉 DateTimeOffset
= P)
다음과 같이 내 질문은 함께 Tuple
-like 구조를 사용하는 옵션을 종료하거나 시간 범위를 포함하지 않았다 기본적인 IConvertible 또는 유사한 지원을 가지고있는 동급입니까?
구현은 [index,TType] where TType : IConvertible
(setter, getters 및 try-getters) 기능을 갖춘 멋진 지연 사전 구현에 관한 것이며, 표준 시간대 관련 데이터를 저장할 수 있어야합니다.
내 아이디어 지금까지 :
현실에
IConvertible
단지 확장하는 새로운ISuperConvertible
인터페이스를 만들고DateTimeOffset
특별한 경우를합니다. 이것은 일반적으로 우리의 IConvertible 지원을 깨뜨릴 것이지만이 매우 구체적인 경우에 작동합니다. 장점과 단점?DateTimeOffset
의 오프셋int
halfhour 대한DateTime
하나 하나를 기억사용 개의 "슬롯"(전체 시간대에는 온 시간 =/없음). 그런 다음
cache[ApplicationStrings.LastUpdate, default : DateTimeOffset.Min]
기능을 잃게됩니다.
그
즉 내 주요 생각,DateTimeOffset
을 깨고
IConvertible
을 유지하거나
IConvertible
을 깨고
DateTimeOffset
유지를 나타냅니다.
저는 C#의 고유 한 특징에 대해 아직 익숙하지 않으므로 모든 통찰력이 도움이 될 것입니다. 당신의 생각은 무엇입니까?
편집 : 추가 :
- 날짜 시간 (고정 시간대)를 사용하지만, 지금은 시간대뿐만 아니라 필요 지금 작업 솔루션이 최적의 시나리오는 대신 사방을 DateTimeOffset을 사용하는 것,있다. 그 본질에있는 질문은 리팩토링에 관한 것이 아니라 내 구체적인 문제입니다.
- 매우 큰 응용 프로그램입니다. 엔티티 프레임 워크와 다른 서비스 및 저장소와 통신하기 위해 더 모호한 프레임 워크를 사용하므로 간단한 시스템 정의 형식을 유지하면 LINQ-X 최적화 등이 중단되지 않습니다. 이 일들이 얼마나 힘든 일인지).
- 다른 사람이 와서 타임 스탬프에 사용되는 DateTime이 있음을 알게되어 오프셋 (시간대)을 고려하지 않고 사용할 수 있기 때문에 데이터 분할에 반대합니다.
실제로이 'ISuperConvertible'로 무엇을하려합니까? –
이미 컴파일 된 코드에는 partial과 같은 개념이 없습니다. 소스 코드 수준에만 있습니다. –
시간대 정보를 삭제하고 사전의 모든 날짜를 UTC로 만드는 것을 고려 했습니까? 그런 다음 DateTimeOffset.UtcDateTime을 사용하여 IConvertible을 구현하는 DateTime을 얻을 수 있습니다. – JamieSee