2013-04-01 25 views
7

यह वास्तव में मुझे परेशान करता है। मैंने केवल पढ़ने वाले, बदलते नामों को हटाने की कोशिश की है .. मैं यहाँ क्या गलत कर रहा हूं?मेरी कक्षा सीएलएस-अनुपालन क्यों नहीं है?

public abstract class CatalogBase<T> where T : class 
{ 
    protected readonly String DataPath; 
    protected readonly XmlSerializer Serializer; 
    private readonly XmlSerializerNamespaces _namespaces; 

    protected CatalogBase(String dataPath) 
    { 
     DataPath = dataPath; 
     Serializer = new XmlSerializer(typeof (T)); 
     _namespaces = new XmlSerializerNamespaces(); 
     _namespaces.Add(String.Empty, String.Empty); 
    } 

    public virtual void Write(T obj) 
    { 
     var streamWriter = new StreamWriter(DataPath); 

     Serializer.Serialize(streamWriter, obj, _namespaces); 
     streamWriter.Close(); 
    } 

    public abstract IDictionary<String, T> Read(); 
} 

संपादित करें:

चेतावनी:

Warning 1 'Ar.ViewModel.Workspaces.MaterialCatalogBase': base type 'Or.Files.CatalogBase' is not CLS-compliant C:_Center_Work_Programming_Cs\Ar\Ar\ViewModel\Workspaces\MaterialCatalogBase.cs 9 18 Ar

EDIT2:

यहां तक ​​कि अगर मैं कक्षा बदलने के नीचे के रूप में मैं अभी भी त्रुटि मिलती है:

public abstract class CatalogBase<T> where T : class 
{ 
    protected readonly String DataPath; 
    protected readonly XmlSerializer Serializer; 
    private readonly XmlSerializerNamespaces namespaces; 

    protected CatalogBase(String dataPath) 
    { 
     DataPath = dataPath; 
     Serializer = new XmlSerializer(typeof (T)); 
     namespaces = new XmlSerializerNamespaces(); 
     namespaces.Add(String.Empty, String.Empty); 
    } 

    public virtual void Write(T obj) 
    { 
     var streamWriter = new StreamWriter(DataPath); 

     Serializer.Serialize(streamWriter, obj, namespaces); 
     streamWriter.Close(); 
    } 

    public abstract IDictionary<String, T> Read(); 
} 

इसके अलावा, मैं भूल गया हूँ उल्लेख करें कि मुझे किसी कारण से दो (बिल्कुल वही त्रुटियां) मिलती हैं ..?

+1

क्या सटीक चेतावनी संदेश आप कर रहे है मिल रहा है? –

+0

हम कंपाइलर नहीं हैं, इसलिए कृपया यह दिखाएं कि आपको गैर-सीएलएस-अनुपालन चेतावनी कहां मिलती है। – CodeCaster

+1

जब मैं इसे संकलित करता हूं तो मुझे वास्तव में चेतावनी नहीं मिलती है, सब ठीक दिखता है। –

उत्तर

4

ऐसा लगता है कि आप निम्नलिखित है:

  • विधानसभा एक वाणी CatalogBase<T>। असेंबली ए CLSCompliant
  • असेंबली बी संदर्भ असेंबली ए असेंबली बी MaterialCatalogBase : CatalogBase<T> घोषित करता है। विधानसभा बी CLSCompliant

के रूप में चिह्नित किया जाता है तो यह आपके मामला है - तो विधानसभा में जो अपने CatalogBase<T> स्थित वर्ग CLSCompliant विशेषता के साथ चिह्नित किया जाना चाहिए:

[assembly: CLSCompliant(true)] 
संबंधित मुद्दे