gpt4 book ai didi

c# - WAP 中的 ProfileCommon 在运行时工作但在编译时不工作

转载 作者:行者123 更新时间:2023-11-30 18:02:55 27 4
gpt4 key购买 nike

我有一个 Web 应用程序项目并在 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 类在运行时可用而不是编译时可用?

最佳答案

ProfileCommon 在编译时不可用,因为它是应用程序启动时创建的类。这是由于您可以在 web.config 的配置文件元素内定义的属性,因此可以动态添加它们。见official documentation中的备注.

关于c# - WAP 中的 ProfileCommon 在运行时工作但在编译时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com