2013-03-04 4 views
7

के बाद मेरी कोड है:एक क्षेत्र प्रारंभकर्ता संदर्भ नहीं दे सकता गैर स्थिर क्षेत्र, विधि, या संपत्ति

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'

+2

और संदेश के कौन से भाग आप के साथ कोई समस्या क्या है ? –

+0

सवाल यह स्पष्ट होगा कि ओपी में 'सिंकहेल्पर' के लिए कक्षा घोषणा शामिल थी। –

+2

* अपने प्रश्न में * एक प्रश्न पूछें * को मत भूलना। यहां कोई प्रश्न नहीं है, बस कुछ व्यवहार का विवरण। –

उत्तर

10

लाइन

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); 
} 
+0

मैं यह सुनिश्चित करने के लिए अपलोडबिटजोब पर केवल पढ़ने के लिए जोड़ूंगा कि ऑब्जेक्ट बनने के बाद इसे बदला नहीं जा सकता है। अगर यह समझ में आता है। – GregC

+0

क्या आप मुझसे 'बिट्सजोब अपलोडबिटजोब = प्रबंधक.क्रेट जॉब (डिस्प्लेनाम, जॉब टाइप। अपलोड) को स्थानांतरित करने के लिए कहते हैं,' कन्स्ट्रक्टर में भी भाग लें। B'cos 'प्रबंधक = नया बिट्स प्रबंधक();' पहले से ही निर्माता के भीतर है। –

+0

मैंने कुछ और कोड के साथ अपडेट किया है - मेरा मतलब है कि कन्स्ट्रक्टर में अपलोड बिट्सजोब आवंटित करना - इसे प्रारंभ नहीं किया जा सकता है कि आप वर्तमान में इसे कैसे कर रहे हैं क्योंकि प्रबंधक – NDJ

-4

आमतौर पर तब होता है कि जब कोशिश कर रहा स्थैतिक विधि से गैर स्थैतिक संपत्ति तक पहुंचने के लिए। कृपया थोड़ा और कोड प्रदान करें।

+3

जो आप वर्णन कर रहे हैं वह कभी भी इस त्रुटि संदेश का कारण नहीं बन सका। यह केवल तभी हो सकता है जब * फ़ील्ड प्रारंभकर्ता * एक गैर स्थैतिक सदस्य का संदर्भ देता है। – Servy

2

uploadBitsJob में घोषित किया जाता है - आप निर्माता में आवंटन के लिए कदम सकता है वर्ग स्तर जो इसे एक क्षेत्र बनाता है। अन्य क्षेत्रों को शुरू करने के लिए फील्ड उदाहरणों का उपयोग नहीं किया जा सकता है।

इसके बजाय, आप यह आरंभ बिना क्षेत्र घोषित कर सकते हैं:

BitsJob uploadBitsJob;

फिर निर्माता में क्षेत्र को प्रारंभ:

public SyncHelper() 
{ 
    manager = new BitsManager(); 
    uploadBitsJob = manager.CreateJob(DisplayName, JobType.Upload);//here. Now manager is initialized 
} 
संबंधित मुद्दे

 संबंधित मुद्दे