0

我正在尝试sealed在我的程序中建立一个公共课程,

问题是,......因为我还是新鲜的尚未开发人员,我觉得这个问题有点困难......C# .net

对于 Question 中的问题,您可以直接跳到 Program example,或阅读以下背景:

DB_Schema 是namespace我创建的一个助手,用于处理数据访问

(它拥有tablesAnd SPs 的名字 ..etc')

它的一个类(下面)处理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));
}

尝试访问其中一个实例 ( 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 中

如果你必须为你的类做一个简短的命名,在将它们用于当前 peoject 时:

把它放在你项目的usings中

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 回答