【问题标题】:CS0120: An object reference is required for the non-static field, method, or property 'System.Web.UI.Control.Controls.get'CS0120:非静态字段、方法或属性“System.Web.UI.Control.Controls.get”需要对象引用
【发布时间】:2012-06-14 16:36:23
【问题描述】:

我知道有很多关于这个主题的问题,但似乎没有一个对我的情况有帮助,所以我发布另一个。

给了我一个项目,并要求我将项目拆分为单独的控件。最初项目中有一个名为“events”的文件夹,它引用了一个名为“EventsRssFeedControl”的控件。我的老板要求我将事件和 EventsRssFeedControl 分开,并将它们放在自己的项目中。所以我就这么做了。我更改了所有的命名空间并编译了所有内容。但是当我尝试在那里导航时,我得到一个错误。 说明:在编译服务此请求所需的资源期间发生错误。请查看以下具体错误详情并适当修改您的源代码。

编译器错误消息:CS0120:非静态字段、方法或属性“System.Web.UI.Control.Controls.get”需要对象引用

来源错误:

<input type="hidden" name="selectedDate" value="<%= UMNEventsRssFeedControl.Controls.UMNEventsRssFeedControl.SelectedDateStr %>"/>

我的代码看起来像这样,我很困惑称它为“非静态”,更困惑为什么它不起作用。

        private static string _selectedDateStr;
    public static string SelectedDateStr
    {
        get { return _selectedDateStr; }
        set { _selectedDateStr = value; }
    }

它在旧项目中工作,唯一改变的是命名空间和对新命名空间的调用。

【问题讨论】:

    标签: c# asp.net .net visual-studio-2010


    【解决方案1】:

    问题其实不在SelectedDateStr

    UMNEventsRssFeedControl.Controls 请求 UMNEventsRssFeedControl 的属性 Controls 的静态 getter。显然,Controls 是上述类的实例属性。

    您需要提供UMNEventsRssFeedControl 的实例才能使代码正常工作。

    【讨论】:

    • 感谢弗拉德的评论。我对这种事情有点陌生,所以它确实让我有点困惑。我不明白的是,当它是更大项目的一部分时,它会起作用,但在它被拆分时不起作用。然而,我想我抓住了对这个控件的每一个引用,所以如果代码创建了一个实例,那么我也应该拥有它。你能举个例子说明我将如何创建一个 UMNEventsRssFeedControl 实例吗?
    • @invisible:嗯,在一个更大的项目中,可能有一个名为UMNEventsRssFeedControl 的类的fieldproperty(类型为@ 987654328@ 也是如此),因此代码将UMNEventsRssFeedControl 解释为实例引用而不是类型。
    【解决方案2】:

    你的命名空间和类被命名为相同的东西。不要那样做。

    【讨论】:

    • 谢谢帕布!我知道我知道! (羞愧地低着头)
    • 原来是我的问题。有一个与控件命名相同的命名空间让我和它感到困惑。我重命名了命名空间并稍微调整了对控件的调用,它起作用了。对于命名空间名称的愚蠢,我会再次羞愧地低下头。
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多