2013-05-30 2 views
0

성능 향상을 위해 응용 프로그램의 일부에 대한 정보를 캐시해야했습니다. 이제 자동으로 System.Runtime.Caching 네임 스페이스를 살펴 보았습니다. 좋아, 문자열을 사용한다는 점만 제외하면 모두 좋아 보인다.캐싱 개체

누군가 어딘가에 키를 잘못 입력하고 실수로 캐시 항목을 복제하는 이유 때문에 문자열을 사용하고 싶지 않습니다.

이제 서브 클래 싱하여 문자열 기반 메소드를 모두 NotImplementedException에 던져서 강력하게 형식화 된 메소드를 만들 수 있습니다.

A. 이미 내가 않는 구현이되지 않습니다 :

내가 앞서 가기 전에 지금 너무 CustomMemoryCache<TKey, TValue>

같은 클래스를 생성하고 난 있는지 확인하려면 이렇게 생각하고 그것을 이미 놓친 오픈 소스 프로젝트가 그리워졌습니다.

B.이 작업을 수행하지 않는 매우 좋은 이유가 있습니다.

+0

어떤 플랫폼을 개발하고 있습니까? 편물? 데스크톱? 실버 라이트? 윈도우 8? – curiousdork

+0

그래서 열쇠로 사용할 건가요? 자주 이것은 캐시 키를 나타내는 많은 수의 상수가있는 클래스를 가짐으로써 해결됩니다. 다른 것을 사용하기를 원한다면, 당신이 필요로하는 논리적 인 키에 특정한 다른 것의 인스턴스를 어떻게 얻을 계획입니까? – Servy

+2

아마도 사용자가 키를 입력 할 수 없도록해야합니다. –

답변

0

결국에는 키에 대한 제네릭을 허용하는 새로운 캐시 클래스를 만들었고 캐시는 열거 형으로 초기화되므로 개발자는 특정 키로 제한됩니다.

불행히도 폐쇄 형 소스 프로젝트에있는 코드를 제공 할 수 없습니다.

+0

'System.Runtime.Caching'으로 간단하게'enum'의 문자열 이름을 얻을 수 있습니다. gotchas의 수가 꽤 비틀 거리는 동안 자신의 캐시 시스템을 작성하는 것은 거의 가치가 없습니다. 'enum'을 통해 네이밍을 처리하는'System.Runtime.Caching'에 대한 래퍼 클래스를 만들 수 있었을지라도 정말로 키를 보호하고 싶다면. –

+0

@ siva.k 정확히 내가 기존 캐싱 시스템과 매우 유사한 인터페이스를 노출시킨 래퍼 클래스를 만들었습니다. 래퍼는 일반 시스템 캐싱 객체를 매개 변수로 사용합니다. – Dreamwalker