Можно ли в .NET использовать отражение для получения всех ненаследуемых методов класса?

StackOverflow https://stackoverflow.com/questions/5880819

Вопрос

Из-за этой проблемы здесь я пытаюсь написать собственный JsonConverter, которыйобрабатывает случаи, когда вы подклассифицируете список или коллекцию, а затем добавляете к ним дополнительные свойства.Таким образом, можно было бы игнорировать все свойства базового класса и сериализовать только те, которые находятся в определенном классе.(Технически это не сработает, потому что если вы подклассифицируете этот подкласс, вы нарушите сериализацию, но это заставило меня задуматься ...)

Возможно ли с помощью отражения (я знаю, что ответ - «да», потому что Reflector делает именно это, но я не знаю, как) получить только те члены, которые определены в самом классе, а не те, которые былипо наследству?Например ...

родовое слово

В данном случае я хочу поразмышлять о MySubClass и получить только SubProp1 и SubProp2, игнорируя BaseProp1 и BaseProp2.Так может быть , как это делается?

M

Это было полезно?

Решение

При вызове метода GetMembers для получения членов типа вы можете указать DeclaredOnly во флаге привязки.

Другие советы

Вы должны выбрать все элементы в MySubClass и оставить только те, где DeclaringType == MySubClass.

С LINQ что-то вроде этого (излишество):

родовое слово

Или с перегрузкой кодового кода:

родовое слово

MemberInfo.DeclaringType должен делать то, что вам нужно..Чтобы члены были напрямую определены в типе X, отфильтруйте элементы по генеракодичному коду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top