如何从部分类访问不同文件中的静态类

时间:2012-11-28 10:09:40

标签: c# .net class static

我在Form1.cs中有部分类Form1。 我在Sample.cs文件中有ManagedIpHelper静态类。

我想从Form1类中的方法访问该静态类中的方法。但是当我使用这个显示在当前上下文中不存在时。 在两个文件名中命名空间都是一样的。我在Sample.cs文件中有另一个名为TcpRow的类。它是正常的public class并且可以访问,而Form1的方法没有错误。

建议的解决办法是什么?

修改

对不起。

TcpRow a; foreach (TcpRow tcpRow in ManagedIpHelper.GetExtendedTcpTable(true))

对于此代码,第一行有错误TcpRow could not be found(are you missing a using directive... 第二行只有错误:当前上下文中不存在ManagedIpHelper

编辑2

sample.cs

sample.cs

Form1.cs的

form1.cs

2 个答案:

答案 0 :(得分:0)

方法是静态类private还是protected?这将导致该方法不可见。

答案 1 :(得分:0)

静态类的名称空间可能与Form1.Cs的名称空间不同,您应该确保如果它们不同,则将using语句添加到Form1.cs类的顶部。

 using NetProject;

另外,要调用静态方法,您应该这样调用它。

 ManagedHelper.MethodName(....)

您的sample.cs文件应如下所示。此代码将编译,但建议您将类分成不同的文件。

<强> Form1.cs的

namespace NetProject
{
    using System;
    using System.Collections.Generic;

    public partial class Form1
    {
        public void SomeMethod()
        {
            TcpRow row;

            foreach (TcpRow tcpRow in ManagedIpHelper.GetExtendedTcpTable(true))
            {

            }
        }
    }
}

<强> Sample.cs

namespace NetProject
{
    using System;
    using System.Collections.Generic;

    public class TcpTable : IEnumerable<TcpRow>
    {
        public IEnumerator<TcpRow> GetEnumerator()
        {
            throw new NotImplementedException();
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            // You should implement this method
            throw new NotImplementedException();
        }
    }

    public class TcpRow
    {

    }

    public static class ManagedIpHelper
    {
        public static TcpTable GetExtendedTcpTable(bool value)
        {
            // You should implement this method
            return new TcpTable();
        }
    }
}

MSDN查看有关命名空间的文档。