Код: Выделить всё
void someCode()
{
Nest MyNest = new Nest();
createInstancesOfAllClassesInside(MyNest);
}
void createInstancesOfAllClassesInside(object anyObj)
{
//How, using reflection ?
}
public class Nest
{
public class A
{
public class A1
{
public class A2
{
public string x = "Activate me!";
}
}
}
public class B
{
public class B1
{
}
}
public string s = "Hello";
}
Я добавлю свою (нерабочую) попытку далеко, чтобы проблема стала понятнее:
Код: Выделить всё
public void createInstancesOfAllClassesInside(object obj)
{
var objType = obj.GetType();
foreach (MemberInfo member in objType.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
{
if (member is Type && ((Type)member).IsNested)
{
var instance = Activator.CreateInstance((Type)member);
// here i do not know how to assign to the member!
var propInfo = objType.GetProperty(member.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
if (propInfo is not null)
{
propInfo.SetValue(obj, instance, (object[])null);
}
}
}
}
Вот пример класса, которому может потребоваться такая обработка:
Код: Выделить всё
public class _CONST
{
public class FOLDERS_APP
{
public class POSTS
{
public const string FOLDER_POSTS_USERS = "somefolder1/";
public const string FOLDER_PRO_POSTS_FROM_USERS = "somefolder2/";
public const string FOLDER_FOR_IM_IN_POST = "somefolder3/";
public const string FOLDER_ATTACH_TO_POSTS = "somefolder4/";
}
public class MANIFESTOS
{
public const string FOLDER_APPLICATION_MO = "somefolder5/";
public const string FOLDER_FOM_S = "somefolder6/";
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... -an-object
Мобильная версия