8

以下は私のコードです:

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'

4

2 に答える 2

11

この線

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);
}   
于 2013-03-04T15:01:20.400 に答える
3

uploadBitsJobクラスレベルで宣言され、フィールドになります。フィールド インスタンスを使用して他のフィールドを初期化することはできません。

代わりに、初期化せずにフィールドを宣言できます。

BitsJob uploadBitsJob;

次に、コンストラクターでフィールドを初期化します。

public SyncHelper()
{
  manager = new BitsManager();
  uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);//here.  Now manager is initialized
}  
于 2013-03-04T15:11:55.533 に答える