그것은 모든 유형의 새로운 인스턴스를 만드는 것이 일반적이기 때문에 - 당신이 제네릭으로 시작하는 경우, 일부 자습서, 블로그 나 MSDN 살펴보고 (이 같이되고 싶어 - 당신은 쉽게 것입니다 인터넷에서 많은 것을 찾으십시오).
여전히 싱글 톤입니다. 사용시
NavigationContextService<string>.Instance.ShareList.Add("Text");
string
인스턴스가 하나 있습니다. generics는 유형이 다른 동일한 메소드/클래스를 작성하려는 경우 많은 도움이됩니다.
한편
당신은 예를 들어 같은 비 일반으로 클래스를 수정할 수 있습니다 후 다른 유형을 개최 싱글 만들려면 : 당신은 내가 위의 코드에서 볼 수 있듯이
public sealed class NavigationContextServiceNonGeneric
{
private static readonly NavigationContextServiceNonGeneric instance = new NavigationContextServiceNonGeneric();
private NavigationContextServiceNonGeneric() { ShareList = new List<object>(); }
public static NavigationContextServiceNonGeneric Instance
{ get { return instance; } }
public List<object> ShareList { get; set; }
public object ShareData { get; set; }
}
을 공유 데이터의 '정확한'유형을 정의하지 않았습니다. 유형은 object
입니다. 그럼 당신은 쉽게와 함께 대부분의 데이터를 저장할 수 있습니다 : 그것은 공유 다양한 유형의 데이터를 보유 할 수 싱글이다
NavigationContextServiceNonGeneric.Instance.ShareList.Add("Text");
NavigationContextServiceNonGeneric.Instance.ShareList.Add(3);
NavigationContextServiceNonGeneric.Instance.ShareList.Add(3.0f);
. BUT 그것은 또한 disavantages있다 - 당신이 어떤 종류의 데이터를 보유하고 어떤 순서로 기억 해야하는 것이 중요합니다. 제 생각에는 Generic 버전이 그 사실 때문에 더 낫습니다.
모든 것은 코드 목적에 따라 다릅니다. 이 두 가지 접근 방식이 더 쉽고 편리 할 수 있습니다. 페이지 탐색에 관해서는
, 당신은 예를 들어 this article에서 방법을 사용하려고 할 수 있습니다 - 당신은 개체를 전달하는 네비게이션 서비스를 확장 : 다음
public static class Extensions
{
private static object Data;
public static void Navigate(this NavigationService navigationService, Uri source, object data)
{
Data = data;
navigationService.Navigate(source);
}
public static object GetNavigationData(this NavigationService service) { return Data; }
}
을 당신이 그것을 사용
NavigationService.Navigate(yourUri, DataToPass);
탐색 후 데이터를 얻을 수 있습니다.
string myTextData = NavigationService.GetNavigationData() as string;
이 방법은 단점이 있습니다. 유형이 안전하지 않으며 삭제 표시 모드에서 데이터가 보존되지 않습니다. 그런 다음
PhoneApplicationService.Current.State.Add("data", yourData);
당신이 당신의 데이터를 얻으려면 : -
쉽게 페이지 탐색하기위한 목적으로
PhoneApplicationService.State Property를 사용할 수있는 두 번째 단점에 관해서는
그것은 (삭제 표시하면서 보존) 사전입니다
yourDataType yourData = PhoneApplicationService.Current.State["data"] as yourDataType;
데이터를 전달할 수있는 다양한 방법이 있습니다.
작동해야합니다. 시도해 보셨습니까? – Romasz
예, 작동하지만 모든 유형에 대해 새 인스턴스를 만들고 싱글 톤에는 인스턴스가 하나만 있어야합니다. – Sam
이렇게 단순한 작업을 수행해야하는 이유가 있습니까? App.cs에 데이터가있는 개체를 넣고 App.Current.xxxx를 통해 액세스하십시오. – crea7or