2011-01-21 3 views
1

나는 웹 코드의이 작은 조각을 발견Prism v4 : 값 변환기 (싱글 톤)를 처리하는 방법이 이미 포함되어 있습니까?

public abstract class ConverterExtension<T>: MarkupExtension, IValueConverter 
    where T: class, new() 
{ 
    private static T _converter = null; 

    public override Object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return _converter ?? (_converter = new T()); 
    } 

    public abstract Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture); 

    public abstract Object ConvertBack(Object value, Type targetType, Object parameter, CultureInfo culture); 
} 

그것은 기본적으로 2 가지 수행합니다
이 1.
2. 당신이를 만들지 않고 변환기를 사용 할 수 있습니다 (매우 편리합니다) 싱글을 만듭니다 정적 제어 (MarkupExtension)

내 프레임 워크로 프리즘 v4를 사용하면이 기능이 이미 내장되어 있습니다. 필자는 Prism이 비슷한 도구 나 복제 도구를 작성하는 것보다 도구를 사용하고 싶습니다. 암호. 나는 프리즘에 익숙하지 않지만 이런 식으로는 찾을 수 없었다. 오, 나는 IMultiValueConverter과 비슷한 기능을 가지고 있습니다.

답변

2

IMHO 여러 인스턴스를 피하기 위해 변환기와 관련하여 싱글 톤의 필요성은보기가있는보기 리소스이며보기와 함께 GC'ed 될 것이며 지나치게 잔인합니다. 그들 자신은 매우 가볍습니다.

귀하의 질문에 ... 프리즘은 모듈 형 응용 프로그램을 작성하기위한 도구이며 유틸리티 유형 클래스/메소드를 제공하는 영역에 있지 않습니다. 프리즘 내에 싱글 톤을 등록하는 측면에서; 이것은 확실히 가능합니다.

IUnityContainer container; 
container.RegisterType<ISingleton, Singleton>(new ContainerControlledLifetimeManager()); 

상기 코드는 용기 수명에 걸쳐 단일 인스턴스를 제공 Singleton으로 ContainerControlledLifetimeManager() 상기 파라미터를 이용하여 ISingleton 대한 분해능을 연결한다.