Un initialiseur de champ ne peut pas référencer le champ, la méthode ou la propriété non statique

Voici mon code:

private BitsManager manager; private const ssortingng DisplayName = "Test Job"; public SyncHelper() { manager = new BitsManager(); } BitsJob uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload); 

Je reçois l’erreur suivante:

A field initializer cannot reference the non-static field, method, or property 'BITSIntegrationModule.SyncService.SyncHelper.manager'

La ligne

 BitsJob uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload); 

ne peut pas accéder à manager car il n’a pas encore été défini – vous pouvez déplacer l’allocation dans le constructeur –

 private readonly BitsManager manager; private const ssortingng DisplayName = "Test Job"; BitsJob readonly uploadBitsJob; public SyncHelper() { manager = new BitsManager(); uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload); } 

uploadBitsJob est déclaré au niveau de la classe, ce qui en fait un champ. Les instances de champ ne peuvent pas être utilisées pour initialiser d’autres champs.

Au lieu de cela, vous pouvez déclarer le champ sans l’initialiser:

BitsJob uploadBitsJob;

Puis initialisez le champ dans le constructeur:

 public SyncHelper() { manager = new BitsManager(); uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);//here. Now manager is initialized } 

Cela se produit généralement lorsque vous essayez d’accéder à une propriété non statique à partir d’une méthode statique. S’il vous plaît fournir un peu plus de code.