2016-08-29 1 views
0

IAM пытается проверить, является ли свойство моего объекта представляет собой набор или нет, но сталкивается с проблемой, так как в портативных библиотеки классов многих метод не доступнатест, если свойство является ICollection в библиотеке Портативный класса

это мой метод :

public virtual bool Equals(TObject other) // where TObject : class 
{ 
    if (other == null) 
     return false; 

    Type t = GetType(); 
    Type otherType = other.GetType(); 

    TypeInfo typeInfo = t.GetTypeInfo();    

    if (t != otherType) 
     return false; 

    IEnumerable<FieldInfo> fields = typeInfo.DeclaredFields; 
    foreach (FieldInfo field in fields) 
    { ... 

Теперь я должен проверить, если поле является ICollection или нет, но

  • ImplementedInterfaces не доступна
  • IsAssignableFrom не доступен
  • GetInterfaces() не доступен
  • GetGenericTypeDefinition() не доступен

может быть, это потому, что у меня есть FieldInfo и не TypeInfo?

Есть ли что-то, что я могу сделать?

+0

Там новое отражение API для использования в ИХЛЕ. См. Ответ на этот вопрос http://stackoverflow.com/questions/14061291/portable-class-library-and-reflection go читать сообщение в блоге. – Will

+0

Я читал https://blogs.msdn.microsoft.com/dotnet/2012/08/28/evolving-the-reflection-api/ на самом деле я использую его для DeclaredFields, но теперь не вижу, как получить то, что мне нужно –

ответ

0

я решил, что excludind этого типа с помощью LINQ Linq

IEnumerable<FieldInfo> fields = typeInfo.DeclaredFields.Where(x => x.FieldType.Name != typeof(ICollection<>).Name); 
Смежные вопросы