我正在尝试在我的程序中设置公共sealed
课程,
事情是,......因为我还是新鲜的C# .net
尚未 开发人员,我发现这个问题有点困难... < / p>
至于问题中的问题,您可以直接跳到程序示例,或阅读以下背景:
DB_Schema是一个帮助namespace
,我已创建,用于处理数据访问
(它包含tables
和SP
的名称..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中
如果你必须为你的课程做一个简短的命名,当它们用于当前的课程时:
只需将其放在项目的using
s
using system...
using restOf.net
//just add your own as follows !
using shortClassName = myHelperNameSpace.MyIncrediblyUnnecessaryLongHelperClassName;
答案 0 :(得分:3)
GetCPAReport
没有任何实例成员。 const
成员隐式静态。在C#中,您现在无法通过引用访问静态成员。
你只想:
SP_Params.Add(new SqlParameter(SProc.GetCPAReport.IsFreelance, 1));
我个人也会GetCPAReport
一个静态类。实例化它没有意义,因为它只包含常量...所以主动阻止它被实例化。