Windows Phone 7 UserExtendedProperties - PullRequest
       34

Windows Phone 7 UserExtendedProperties

2 голосов
/ 23 декабря 2010

После направления сюда: http://msdn.microsoft.com/en-us/library/microsoft.phone.info.userextendedproperties.getvalue%28v=VS.92%29.aspx

Я попробовал следующий код в загруженном приложении. Все, что было записано, было значением 000001 .

Я знал, что это будет иметь место в эмуляторе , но я надеялся получить реальное значение, когда оно было на моем телефоне. Есть идеи?

                 int ANIDLength = 32;  
                 int ANIDOffset = 2;

                 string result = string.Empty;  
                 object anid;  
                 if (UserExtendedProperties.TryGetValue("ANID", out anid))  
                 {
                     if (anid != null && anid.ToString().Length >= (ANIDLength + ANIDOffset))
                     {
                         result = anid.ToString().Substring(ANIDOffset, ANIDLength);
                     }
                     else
                     {
                         result = "000001";
                     } 
                 }   

1 Ответ

6 голосов
/ 23 декабря 2010

Вам необходимо удалить 1 из расчета вашей проверки длины, чтобы учесть операцию подстроки, работающую с индексом на основе нуля:

 if (anid != null && anid.ToString().Length >= (ANIDLength + ANIDOffset - 1))

Это работает на моем компьютере:

private string GetAnid()
{
    object anidValue;

    int ANIDLength = 32;
    int ANIDOffset = 2;

    if (UserExtendedProperties.TryGetValue("ANID", out anidValue))
    {
        if (anidValue != null && anidValue.ToString().Length >= (ANIDLength + ANIDOffset - 1))
        {
            return anidValue.ToString().Substring(ANIDOffset, ANIDLength);
        }
        else
        {
            return "???";
        }
    }
    else
    {
        return "???";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...