0

私は自分のプログラムでパブリックsealedクラスを開始しようとしていますが、

問題は、...私はまだ開発者ではないので、この問題は少し難しいと思います...C# .net

質問の問題については、プログラムの例に直接スキップするか、次の背景を読むことができます。

DB_Schemaはnamespace、私が作成した、データアクセスを処理するためのヘルパーです。

tablesAndSPの名前..etc'を保持します)

そのクラスの1つ(以下)はを扱いStored Procedures、これはSPパラメータの名前を保持します

public sealed class SProc
{
    public sealed class GetCPAReport
    {
        public const string RecordNum = "@RecordNum",
                            CPAColumnName = "@CPAColumn_Name",
                            Value = "@value",
                            IsFreelance = "@isFreelance";
    }

}
  • プログラムでの使用法:

SPを介したデータアクセスのメソッド内

private DataTable Get_RefTable_OfUsersBy(string DepartmetID)
{
    SProc.GetCPAReport SProcGetCpa = SProc.GetCPAReport();
    SP_Params.Add(new SqlParameter(SProcGetCpa.IsFreelance, 1));
}

インスタンス()メンバーの1つにアクセスしようとするSProcGetCpaことは、私が試した方法では不可能です。

私はクラスを作ることができましたSProc+それはサブクラスでUpdateCPAReport はなく sealed...

しかし、私が質問を検索していたとき、「封印されたクラスをインスタンス化できますか?

ええと..答えはイエスです...エラーに関する情報を見つけようとしていますが:

インスタンス参照ではアクセスできません。代わりにタイプ名で修飾してください

結果は得られません。また、私のような新鮮な.net C#arpersではなく、インスタンス化されたパブリックメンバーコードにアクセスsealed classする例もありません。

-更新

長い行を避け、ストアドプロシージャ名を表す文字列にカスタムの短い名前を付けたいと思いました

それ以外の

ParListEmployeeUsrs.SP_Params.Add(new SqlParameter(HTSPs.RobTC_CPA_Users_Names_JobPosition.IsFreelance, SelectedDepartmentID));

アップデート2

答えを求めているこの主題に関する将来の来訪者のために

私たちの親愛なる友人によって提案されたように、ここStackOverflowで

クラスに短い名前を付ける必要がある場合、現在の人々にそれらを使用するとき:

これをプロジェクトusing中に配置するだけです

using system...
using restOf.net
//just add your own as follows !

using shortClassName = myHelperNameSpace.MyIncrediblyUnnecessaryLongHelperClassName;
4

1 に答える 1

3

GetCPAReportインスタンスメンバーはありません。constメンバーは暗黙的に静的です。C#では、現時点でアクセスしようとしているため、参照を介して静的メンバーにアクセスすることはできません。

あなたはただ欲しい:

SP_Params.Add(new SqlParameter(SProc.GetCPAReport.IsFreelance, 1));

個人的には静的クラスも作成GetCPAReportします。定数が含まれているだけなので、インスタンス化しても意味がありません...したがって、インスタンス化されないように積極的に防いでください。

于 2012-12-07T15:47:57.500 に答える