У меня есть проект веб-приложения и реализованные свойства профиля в файле web.config.Когда я обнаружил, что не могу получить доступ к объекту ProfileCommon
, я погуглил и нашел несколько обходных путей:
И так далее.Но никто не сказал, что у меня есть объект ProfileCommon
во время выполнения.Вот мой пример:
<profile enabled="true">
<properties>
<add name="AdminRemark"/>
<add name="FacilityID" type="System.Int64" defaultValue="1"/>
</properties>
</profile>
Эта строка хорошо компилируется и работает, но у меня есть жестко закодированное имя свойства:
rcbFacilityID.SelectedValue =
(ProfileBase.Create(userCurrent.UserName) as ProfileBase)
.GetPropertyValue("FacilityID").ToString();
Но эта строка не компилируется и выдает ошибку: Не удалось найти тип или имя пространства имен «ProfileCommon» (отсутствует директива using или ссылка на сборку?)):
rcbFacilityID.SelectedValue =
(ProfileBase.Create(userCurrent.UserName) as ProfileCommon)
.FacilityID.ToString();
Но во время выполнения я попытался выполнить строку вОкно Visual Studio Watch и все заработало!Это событие отображало тип ProfileBase.Create(userCurrent.UserName)
как ProfileCommon
без приведения.Intellisense не работал, но я мог проверить объект, и я увидел, что для него определены оба свойства профиля.
Я не против работать с жестко закодированными именами свойств профиля, если это единственный способ, кроме пользовательскогоProfileCommon
, но я бы хотел объяснить, почему класс ProfileCommon
доступен во время выполнения, а не во время компиляции?