Пробовал я сделать так:
type.GetFields(BindingFlags.DeclaredOnly)
type.GetMethods(BindingFlags.DeclaredOnly)
Не возвращает ничего.
Пробую добавить Public, NonPublic, Instance, Static - что-то появилось, но не всё.
type.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
type.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
Самое странное, что даже вообще без флагов он не возвращает все методы и поля =/
Как получить все, кроме наследуемых? Независимо от модификатора доступа и статичности или нестатичности.
Цель: создать json-объект структуры проекта (массив классов со всеми полями и методами). В последствии этот файл будет применятся другим человеком для рисования диаграммы на web-странице.
Проект учебный, так что смысла в конечной цели искать не стоит.
Ссылка на сам проект для рефлексии: https://github.com/MrModest/Tetris Он вроде небольшой. Если нужны именно какие-то обрывки сюда, то пишите.
Пример класса:
public class Block
{
public static int Length { get; set; } = 30;
public static Size Size { get { return new Size(Length, Length); } }
public static Rectangle GetRect(int hPos, int vPos)
{
return new Rectangle(new Point(hPos * Length, vPos * Length), Size);
}
public Block(int hPos, int vPos)
{
if (hPos < 0 || vPos < 0)
{
throw new Exception("Отсчёт позиций (hPos и vPos) идёт с нуля и не может быть отрицательным!");
}
this.hPos = hPos;
this.vPos = vPos;
}
public Block(int hPos, int vPos, Color color)
{
if (hPos < 0 || vPos < 0)
{
throw new Exception("Отсчёт позиций (hPos и vPos) идёт с нуля и не может быть отрицательным!");
}
this.hPos = hPos;
this.vPos = vPos;
this.Color = color;
}
public int hPos { get; set; }
public int vPos { get; set; }
public Point LocationPoint { get { return new Point(hPos * Length, vPos * Length); } }
public Color Color { get; set; } = Color.Gray;
public Rectangle Rect { get { return new Rectangle(LocationPoint, Size); } }
public void Draw(Graphics g)
{
g.FillRectangle(new SolidBrush(Color), Rect);
Pen pen = new Pen(Color.Gray, 2);
pen.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset;
g.DrawRectangle(pen, Rect);
}
}
Пример возврата (после пропуска через свои классы упрощения):
{
"Modifier": "publicMod",
"Name": "Block",
"FullName": "Tetris.Block",
"Namespace": "Tetris",
"BaseClass": null,
"Attributes": [],
"Operations": [{
"Modifier": "publicMod",
"ReturnType": "System.Int32",
"Name": "get_Length",
"Parameters": [],
"IsStatic": true,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Void",
"Name": "set_Length",
"Parameters": [{
"Type": "Int32",
"Name": "value"
}
],
"IsStatic": true,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Drawing.Size",
"Name": "get_Size",
"Parameters": [],
"IsStatic": true,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Drawing.Rectangle",
"Name": "GetRect",
"Parameters": [{
"Type": "Int32",
"Name": "hPos"
}, {
"Type": "Int32",
"Name": "vPos"
}
],
"IsStatic": true,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Int32",
"Name": "get_hPos",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Void",
"Name": "set_hPos",
"Parameters": [{
"Type": "Int32",
"Name": "value"
}
],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Int32",
"Name": "get_vPos",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Void",
"Name": "set_vPos",
"Parameters": [{
"Type": "Int32",
"Name": "value"
}
],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Drawing.Point",
"Name": "get_LocationPoint",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Drawing.Color",
"Name": "get_Color",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Void",
"Name": "set_Color",
"Parameters": [{
"Type": "Color",
"Name": "value"
}
],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Drawing.Rectangle",
"Name": "get_Rect",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.Void",
"Name": "Draw",
"Parameters": [{
"Type": "Graphics",
"Name": "g"
}
],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}, {
"Modifier": "publicMod",
"ReturnType": "System.String",
"Name": "ToString",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": true
}, {
"Modifier": "publicMod",
"ReturnType": "System.Boolean",
"Name": "Equals",
"Parameters": [{
"Type": "Object",
"Name": "obj"
}
],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": true
}, {
"Modifier": "publicMod",
"ReturnType": "System.Int32",
"Name": "GetHashCode",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": true
}, {
"Modifier": "publicMod",
"ReturnType": "System.Type",
"Name": "GetType",
"Parameters": [],
"IsStatic": false,
"IsAbstract": false,
"IsVirtual": false
}
],
"IsInterface": false,
"IsAbstract": false,
"IsStatic": false,
"IsEnum": false,
"IsSealed": false
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется планшет c микросхемой управления питанием AXP288, нужно программно получить напряжение с батареи без использования стандартных драйверов...
WinForms добавляю picturebox а в него круглую картинку, но при этом контейнер остаётся прямоугольнымКогда на picturebox вешаю onClick, то появляются пустые...
Единственное, что нашел - это библиотека AFORGEnet с сэмплом SNAPSHOT MAKER
Доброго времени суток, ГосподаУ меня есть приложение, которое имеет одно окно, в нем определен Frame контрол, и несколько страниц