Asp.net MVC3 доступ к внутреннему классу из бритвы View

Это не повторяющийся вопрос. Я уже искал на SO, но мне нужно другое.

Это сегодня способ получить доступ к внутреннему классу из Razor View, я знаю, что сборка должна быть видимой, и это еще не все.

По умолчанию из представлений не доступны ни свойства, ни методы, объявленные во «внутреннем» классе. Мне нужен способ отменить это.

Спасибо.


person User907863    schedule 24.07.2012    source источник
comment
по какой причине вы хотите это сделать? Вы ищете доступ к методу / свойству?   -  person Shyju    schedule 24.07.2012
comment
Это безразлично. По умолчанию из представлений не доступны ни свойства, ни методы, объявленные во внутреннем классе. Мне нужен способ отменить это. Спасибо.   -  person User907863    schedule 24.07.2012
comment
Я знаю, что сборка должна быть видна, и так ли это. Вы имеете в виду атрибут InternalsVisibleTo? msdn.microsoft.com/en-us/library/   -  person VJAI    schedule 24.07.2012
comment
У меня точно такая же проблема. У меня есть класс констант, в котором хранятся все глобальные доступные константы, и мне нужно ссылаться на него в представлении Razor, но я не хочу, чтобы класс констант был видимым для других сборок. Кто-нибудь еще решил это?   -  person JD Stuart    schedule 15.10.2012


Ответы (1)


В большинстве случаев вы можете изменить класс с внутреннего на общедоступный. Вы можете использовать InternalsVisibleTo, если это не так. не желательно.

В случае файлов .Designer.cs, которые автоматически создаются с помощью файлов ресурсов ( .resx), вы можете изменить модификатор доступа на общедоступный, открыв файл resx в представлении конструктора:

Если ничего не помогает, вы сможете использовать отражение, чтобы получить то, что вам нужно. См. Верхний ответ здесь для получения подробной информации тот

Удачи!

person stepdo    schedule 07.04.2015
comment
К сожалению, кажется, что InternalsVisibleTo не помогает с движком Razor, поскольку он генерирует время выполнения общедоступных классов, из которого открывается модель. Это означает, что уровень доступности будет отличаться и вызывать ошибку компиляции в Razor, независимо от того, используется ли InternalsVisible или нет. - person Almund; 17.09.2015