Инициализатор поля не может ссылаться на нестатическое поле, метод или свойство
Ниже приведен мой код:
private BitsManager manager;
private const string DisplayName = "Test Job";
public SyncHelper()
{
manager = new BitsManager();
}
BitsJob uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);
Я получаю следующую ошибку:
A field initializer cannot reference the non-static field, method, or property 'BITSIntegrationModule.SyncService.SyncHelper.manager'
3 ответа
Решение
Линия
BitsJob uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);
не могу получить доступ к диспетчеру, потому что он еще ни к чему не настроен - вы можете переместить выделение в конструктор -
private readonly BitsManager manager;
private const string DisplayName = "Test Job";
BitsJob readonly uploadBitsJob;
public SyncHelper()
{
manager = new BitsManager();
uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);
}
uploadBitsJob
объявляется на уровне класса, что делает его полем. Экземпляры полей нельзя использовать для инициализации других полей.
Вместо этого вы можете объявить поле без его инициализации:
BitsJob uploadBitsJob;
Затем инициализируйте поле в конструкторе:
public SyncHelper()
{
manager = new BitsManager();
uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);//here. Now manager is initialized
}
Обычно это происходит при попытке получить доступ к нестатическому свойству из статического метода. Пожалуйста, предоставьте немного больше кода.