Как обнаружить ExpandoObject против динамического объекта? - PullRequest
0 голосов
/ 01 июля 2018

Как определить, является ли тип ExpandoObject по сравнению с динамическим объектом?

Это возвращает true для обоих:

public static bool IsDynamicObject(Type type)
{
    return typeof(IDynamicMetaObjectProvider).IsAssignableFrom(type);
}

Пример кода для динамического объекта:

public class Entity
{
    public Guid Id { get; set; }
    public String Name { get; set; }
}

Delta<Entity> x = new Delta<Entity>();
dynamic dynamicX = x;
dynamicX.Name = nameof(Entity);
dynamicX.Id = typeof(Entity).GUID;

Пример кода для объекта Expando:

dynamic childX = new ExpandoObject();
childX.A = 1;

1 Ответ

0 голосов
/ 03 июля 2018

ExpandoObject может быть преобразован в словарь для получения имен и значений членов

public static bool IsExpandoObject(object objectValue)
{
    if (objectValue == null)
        return false;

    if (IsDynamicObject(objectValue.GetType()))
    {
        IDictionary<string, object> expandoPropertyValues = objectValue as IDictionary<string, object>;
        return expandoPropertyValues != null;
    }

    return false;
}

public static bool IsDynamicObject(Type type)
{
    return typeof(IDynamicMetaObjectProvider).IsAssignableFrom(type);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...