簡體   English   中英

訪問實例化的密封類公共成員

[英]accessing an instantiated sealed class public member

我試圖instatiate公共sealed在我的程序類,

事實是,...由於我仍然是C# .net 尚未開發的新人,因此我發現此問題有點困難...

對於“問題”中的問題,您可以直接跳至“程序”示例,或閱讀以下背景知識:

DB_Schema是我創建的一個助手namespace ,用於處理數據訪問

(它包含tablesSP的名稱..etc')

它的一個類(下面)處理Stored Procedures ,該類保存SPs參數的名稱

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));
}

嘗試訪問實例之一( SProcGetCpa )成員是不可能的。

我可以使類SProc +它的子類UpdateCPAReport 沒有 sealed和...

但是,當我搜索問題“ 可以實例化密封類嗎?

很好..答案是肯定的 ,盡管試圖查找有關該錯誤的信息:

不能使用實例引用進行訪問; 用類型名稱代替它

沒有結果,也沒有訪問實例化sealed class公共成員代碼的示例,至少不適合像我這樣的新鮮.net C#arpers

- 更新

我想避免使用長行,並為表示存儲過程名稱的字符串自定義短名稱

代替

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;

GetCPAReport 沒有任何實例成員。 const成員是隱式靜態的。 在C#中,您目前無法通過引用訪問靜態成員。

您只想要:

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

我個人也將GetCPAReport 靜態類。 實例化它沒有意義,因為它只包含常量...因此請積極地防止實例化它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM