Анонимные типы и Get accessors на WP7.1?

Я пытаюсь написать простой конвертер объекта в словарь, как показано ниже:

public static class SimplePropertyDictionaryExtensionMethods
{
    public static IDictionary<string,string> ToSimplePropertyDictionary(this object input)
    {
        if (input == null)
            return new Dictionary<string, string>();

        var propertyInfos = from property in input.GetType()
                                .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.GetProperty)
                            where property.CanRead
                            select property;

        return propertyInfos.ToDictionary(x => x.Name, x => input.GetPropertyValueAsString(x));
    }

    public static string GetPropertyValueAsString(this object input, PropertyInfo propertyInfo)
    {
        var value = propertyInfo.GetGetMethod().Invoke(input, new object[] {});
        if (value == null)
            return string.Empty ;

        return value.ToString();
    }
}

Однако, когда я пытаюсь вызвать его, как показано ниже:

var test = (new { Foo="12", Bar=15 }).ToSimplePropertyDictionary();

Тогда он не работает с исключением:

[System.MethodAccessException]: {"Attempt to access the method failed: .<>f__AnonymousType0`1.get_Foo()"}

Это просто модель безопасности в Mango говорит "Нет"? Есть ли какой-нибудь способ обойти это? Мне кажется, что это публичный аксессор Get - поэтому мне кажется, что я должен иметь возможность вызвать его?

Stuart

10
задан Stuart 25 November 2011 в 19:19
поделиться