当前位置:  开发笔记 > 编程语言 > 正文

C#部分类出错

如何解决《C#部分类出错》经验,为你挑选了4个好方法。

我使用部分类来分割2个文件之间的一些功能,但我收到一个错误.我究竟做错了什么?

A1.cs:

private partial class A
{
    private string SomeProperty { get { return "SomeGeneratedString"; } }       
}

A2.cs:

private partial class A
{
    void SomeFunction()
    {
        //trying to access this.SomeProperty produces the following compiler error, at least with C# 2.0
        //error CS0117: 'A' does not contain a definition for 'SomeProperty'
    }
}

Sklivvz.. 29

这两个部分类是否在同一名称空间中?这可能是一个解释.



1> Sklivvz..:

这两个部分类是否在同一名称空间中?这可能是一个解释.



2> Ram..:

与@Andrey K的答案相同,但简单来说

使用每个文件的"属性"窗口将所有部分类的构建操作设置为"编译"

属性窗口 - >构建动作属性



3> Matt Brunell..:

不同名称空间



4> Troy Howard..:

起初,我无法重现您的错误。

当这些局部类单独定义时,在名称空间内,private关键字会导致构建失败,并出现“无法将名称空间中定义的元素显式声明为private,protected或protected内部”。

如果我将它们设为私有并嵌套在另一个类中,则一切正常。

仅当在一个文件中,该类的一部分嵌套在另一个类中,而在另一个文件中,我不嵌套该类,然后删除private关键字时,才可以重现您的错误:

Class1.cs:

namespace stackoverflow.answers
{
    public class Foo
    {
        private partial class Bar
        {
            private string SomeProperty { get { return "SomeGeneratedString"; } }
        }
    }
}

Class2.cs:

namespace stackoverflow.answers
{
    partial class Bar
    {
        void SomeFunction()
        {
            string bar = this.SomeProperty;
        }
    }    
}

如果名称空间不同,我也会得到您描述的错误。

请发布解决方案的完整代码,因为提供的代码是无效的C#语法,没有更多上下文就无法查看。

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有