0

Form1.csに部分クラスForm1があります。Sample.csファイルにManagedIpHelper静的クラスがあります。

Form1クラスのメソッドからその静的クラスのメソッドにアクセスしたい。しかし、私が使用すると、これは現在のコンテキストに存在しないことを示しています。どちらのファイル名でも名前空間は同じです。TcpRowSample.csファイルに名前が付けられた別のクラスがあります。これは正常public classであり、Form1のメソッドからエラーなしでアクセスできます。

これに対する提案された解決策は何ですか?

編集

ごめんなさい。

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

このコードの場合、最初の行にはエラーがTcpRow could not be found(are you missing a using directive... あり、2番目の行にはエラーのみがあります:ManagedIpHelper現在のコンテキストには存在しません。

編集2

sample.cs

sample.cs

Form1.cs

form1.cs

4

2 に答える 2

0

メソッドは静的クラスにありますprivateprotected?これにより、メソッドが表示されなくなります。

于 2012-11-28T10:11:50.083 に答える
0

静的クラスの名前空間は、Form1.Csの名前空間とは異なる可能性があります。異なる場合は、Form1.csクラスの先頭にusingステートメントを追加する必要があります。

 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の名前空間に関するドキュメントを確認してください。

于 2012-11-28T10:12:30.460 に答える