이러한 종류의 작업으로 얻은 접근법은 솔루션에서 중심 프로젝트를 만드는 것입니다. Core.UI (또는 원하는대로)라고 할 수 있습니다. 거기서, 컨테이너에 싱글 톤으로 등록한 클래스를 생성합니다.이 클래스는 애플리케이션 시작시 필요한 데이터를로드합니다 (Initialize 호출을 통해 코드 참조). 이것은 일반적으로 서비스라고합니다.
데이터를 원하는대로 유연하게로드하면 만들 수 있습니다. 응용 프로그램로드 시간 또는 속성에 처음 액세스 할 때 나는 데이터가 거대하지 않기 때문에 나는 앞을 내다 보았다. 그리고 그것은 자주 바뀌지 않는다. 여기에도 일종의 캐싱 메커니즘을 고려할 수도 있습니다.
나는 제품과 비슷한 것을 만들었습니다. 아래는 미국 주 코드입니다.
public class StateListService : IStateListService // The interface to pass around
{
IServiceFactory _service_factory;
const string country = "United States";
public StateListService(IServiceFactory service_factory)
{
_service_factory = service_factory;
Initialize();
}
private void Initialize()
{
// I am using WCF services for data
// Get my WCF client from service factory
var address_service = _service_factory.CreateClient<IAddressService>();
using (address_service)
{
try
{
// Fetch the data I need
var prod_list = address_service.GetStateListByCountry(country);
StateList = prod_list;
}
catch
{
StateList = new List<AddressPostal>();
}
}
}
// Access the data from this property when needed
public List<AddressPostal> StateList { get; private set; }
}
편집 :
는, 프리즘 6 싱글로 위를 등록 당신이 당신의 컨테이너를 초기화하는 데 사용하는 방법에 코드 줄을 추가합니다. 보통 부트 스트랩퍼에서.
RegisterTypeIfMissing(typeof(IStateListService), typeof(StateListService), true);