2010-04-30 3 views
4

Есть ли вообще смысл в наследовании от класса Type в .Net?Наследовать из класса Type .Net

В чем может быть смысл этого?

Я спрашиваю это потому, что этот текст в MSDN документации:

Примечания для наследующих Когда вы унаследовали от типа, вы должны переопределить следующие член ... список членов.

MSDN документ для Типа: http://msdn.microsoft.com/en-us/library/system.type.aspx

хорошо, что на самом деле говорит, что любой человек может наследовать от типа ... но они не говорят, почему вы никогда не хотите, чтобы сделать это.

Спасибо!

+0

Почему вы хотите это сделать? Любая конкретная потребность? – Kangkan

+0

@ Kangkan: было бы неплохо написать информацию об отражении без использования атрибутов. Это просто идея! Я просто хочу знать возможности. Благодаря! –

ответ

2

Все зависит от того, что вы делаете.

Это один случай. Возможно, мне понадобится дополнительная функциональность класса Type для использования в моем приложении в какой-то момент, скажем, для ведения журнала. Однако тогда мне нужно передать его функции, ожидающей только Type. Я могу передать свой унаследованный класс этой функции без вызова MyObject.GetType();

0

Я иногда хотел бы, чтобы некоторые из других классов в библиотеках отражения .Net были получены из интерфейсов, так как я должен делать skin = и = переносить многие из них, когда я пишу модульные тесты для кода кода генерации кода.

Например, было бы неплохо, если бы был интерфейс IMethodInfo, который был внедрен в MethodInfo. Затем я мог бы написать свой объект FakeMethodInfo для использования в моих модульных тестах.

Эта же идея относится к типу: Я хотел бы создать класс FakeType, который имеет тот же интерфейс, что и Type, но не связан с CLR, а вместо этого возвращает поддельные данные, предоставленные моим модульным тестовым кодом.

+0

Я думаю, было бы неплохо, если бы я мог расширить тип, возвращаемый для моих собственных типов ... добавляя к нему информацию, не используя атрибуты. –

+1

ICustomTypeDescriptor очень удобен для классов, которые используют System.Component.TypeDescriptor для отражения. Вы можете в принципе переопределить все с помощью этого интерфейса. Этот класс используется во многих классах .NET-среды, связанных с Windows Forms и другими компонентами. Я не знаю механизм для hook Object.GetType(), хотя. –

Смежные вопросы