Я пытаюсь перебрать классы, свойства которых не связаны с другими классами (например, publi c SomeOtherClass code {get; set;}
В своей попытке и благодаря советам других людей я пришел со следующим, который перебирает классы определенного c пространства имен (то есть Library = "ConsoleApp1.Library" et c) как:
var classes = AppDomain.CurrentDomain.GetAssemblies ()
.SelectMany (t => t.GetTypes ())
.Where (t =>
t.IsClass &&
t.Namespace == Library &&
!t.IsNested)
.ToList ();
и получает свойства как
var properties = classes.SelectMany (x => x.GetProperties (BindingFlags.Public | BindingFlags.Instance)
.Select (y => y.PropertyType));
в то время как я получаю то, что мне нужно от foreach l oop:
foreach ( var method in classes.Where
(x => !properties.Contains(x) && !properties.Contains (x))
.Select (x => x.Name) )
{
// some work here
}
Тем не менее, некоторые случаи проскальзывали через мой выбор, случаи, когда класс имеет следующие свойства как Array, ICollection, Список и словарь:
public class TopObject
{
[JsonProperty("ex")]
public OtherResults ex { get; set; }
[JsonProperty ("Results")]
public OtherResults Results { get; set; }
private readonly OtherResults[,] Codes1 = new OtherResults[9, 9];
public ICollection<OtherResults> Codes2 { get; set; }
public List<OtherResults> Codes3 { get; set; }
public Dictionary<int, OtherResults> Map { get { return _map; } }
public TopObject()
{ Results = new OtherResults (); }
}
public class OtherResults
{
[JsonProperty ("Jcodes")]
public string Jcodes { get; set; }
public OtherResults()
{ }
}
Мне нужна помощь в редактировании var method
, чтобы включить (дополнительно) случаи, когда свойство имеет Dictionary
Тип значения любого из классов или Array
из тип любого из классов, или ICollection
или List
, которые принимают любые известные классы.
Пожалуйста, кто-то может помочь мне с этим? Большое спасибо