Вот код, который у меня есть:
public class MyObject : DependencyObject
{
public int speedSimu
{
get { return (int)GetValue(speedSimuProperty); }
set { SetValue(speedSimuProperty, value); }
}
public static readonly DependencyProperty speedSimuProperty =
DependencyProperty.Register("speedSimu", typeof(int), typeof(MyObject), new PropertyMetadata(0));
public int Value
{
get;
set;
}
}
public class Timer : DependencyObject
{
public string description
{
get { return (string)GetValue(descriptionProperty); }
set { SetValue(descriptionProperty, value); }
}
public static readonly DependencyProperty descriptionProperty =
DependencyProperty.Register("description", typeof(string), typeof(Timer), new PropertyMetadata("This is a timer"));
}
public class AnotherClass
{
}
public class Test
{
MyObject q1 = new MyObject();
MyObject q2 = new MyObject();
MyObject q3 = new MyObject();
MyObject q4 = new MyObject();
Timer t1 = new Timer();
Timer t2 = new Timer();
Timer t3 = new Timer();
AnotherClass a1 = new AnotherClass();
AnotherClass a2 = new AnotherClass();
AnotherClass a3 = new AnotherClass();
}
Я генерирую DLL из этого кода, и вот что я хочу сделать:
- только получать экземпляры (== игнорировать все классы, кроме "test"): ОК
- фильтр DependencyObjects: ОК
- фильтр DependencyProperties: не в порядке
- доступ к информации, чтобы я мог получить именно то, что я хочу (я не хочу больше ничего):
#
q1
int speedSimu: 0
q2
int speedSimu: 0
q3
int speedSimu: 0
q4
int speedSimu: 0
t1
Строка описания: «Это таймер»
t2
Строка описания: «Это таймер»
#
(Обратите внимание, что! DependecyProperties игнорируются)
Код, который у меня есть на данный момент:
var library = Assembly.LoadFrom(libraryPath);
IEnumerable<Type> types = library.GetTypes();
foreach (Type type in types)
{
var lib = Activator.CreateInstance(type);
Type myType = lib.GetType();
//This filters my Class Test. Not elegant but not my main problem at the moment.
if (myType.BaseType.ToString() == "System.Object")
{
FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo field in fields)
{
var fieldtype = field.FieldType;
if (typeof(DependencyObject).IsAssignableFrom(fieldtype))
{
//Here I am !
}
}
}
}
Дело в том, что на данный момент, я думаю, я близок к концу, но мне кажется, что, как и в «FieldInfos», информация о MyObject и Timer теряется (я имею в виду свойства / поля и их значения ..) .) но я не знаю, как это сделать по-другому ...
Я действительно заблокирован здесь и не знаю, что делать дальше ...