Доступ к экземпляру закрытого публичного члена класса

Я пытаюсь создать общественность sealed класс в моей программе,

дело в том... как я еще свеж C# .net еще не разработчик, я нахожу эту проблему немного трудной...

Что касается проблемы в вопросе, вы можете перейти непосредственно к примеру программы или прочитать следующую информацию:

DB_Schema - помощник namespace, я создал, чтобы иметь дело с доступом к данным

(это держит tables А также SP имена... и т. д.)

один из его классов (ниже) имеет дело с 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

для будущих желающих на эту тему, которые ищут ответ

как предложено нашим дорогим другом, здесь, в Stackru

если вам нужно сделать короткие имена для ваших классов, при использовании их для текущего проекта:

просто поместите это среди using с вашего проекта

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

using shortClassName = myHelperNameSpace.MyIncrediblyUnnecessaryLongHelperClassName;

1 ответ

Решение

GetCPAReport не имеет никаких членов экземпляра. const члены неявно статичны. В C# вы не можете получить доступ к статическим членам через ссылку, как вы пытаетесь в данный момент.

Вы просто хотите:

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

Лично я бы сделал GetCPAReport статический класс тоже. Нет смысла его создавать, так как он содержит только константы... так что активно предотвращайте его создание.

Другие вопросы по тегам