मैं निम्नलिखित enum परिभाषाओं ...हल करने के लिए कैसे करें "दोनों एक्सएमएल प्रकार नाम एक्स का उपयोग करते हैं, एक्सएमएल विशेषताओं का उपयोग इस प्रकार के लिए एक अद्वितीय एक्सएमएल नाम और/या नेमस्पेस निर्दिष्ट करने के लिए करते हैं?
namespace ItemTable
{
public enum DisplayMode
{
Tiles,
Default
}
}
namespace EffectiveItemPermissionTable
{
public enum DisplayMode
{
Tree,
FullPaths
}
}
... और फिर मैं निम्नलिखित वर्गों है ...
public class Table<TDisplayMode>
where TDisplayMode: struct
{
// public
public TDisplayMode DisplayMode
{
get { return mDisplayMode; }
set { mDisplayMode = value; }
}
// private
private TDisplayMode mDisplayMode;
}
public class ItemTable : Table<ItemTable.DisplayMode>
{}
public class EffectiveItemPermissionTable : Table<EffectiveItemPermissionTable.DisplayMode>
{}
public class UISettings
{
public UISettings()
{
ItemTable = new ItemTable();
EffectiveItemPermissionTable = new EffectiveItemPermissionTable();
}
public ItemTable ItemTable { get; set; }
public EffectiveItemPermissionTable EffectiveItemPermissionTable { get; set; }
}
... और जब मैं का एक उदाहरण क्रमानुसार करने की कोशिश साथ ... UISettings
System.Xml.Serialization.XmlSerializer lSerializer =
new System.Xml.Serialization.XmlSerializer(typeof(UISettings));
... मैं निम्नलिखित त्रुटि मिलती है:
Types 'UISettings.Table`1[EffectiveItemPermissionTable.DisplayMode]' and
'UISettings.Table`1[ItemTable.DisplayMode]' both use the XML type name,
'TableOfDisplayMode', from namespace ''.
Use XML attributes to specify a unique XML name and/or namespace for the type.
मैंने XmlType attribubtes और वेब पर पोस्ट किए गए सभी प्रकार के समाधानों का उपयोग करने का प्रयास किया है लेकिन कुछ भी काम नहीं करता है। त्रुटि में उल्लिखित XML प्रकार का नाम हमेशा TableOfDisplayMode
होता है।
अभी एकमात्र समाधान नामों में से एक का नाम बदलना है, उदा। DisplayMode_
पर, लेकिन मुझे बदसूरत लगता है।
public class UISettings
{
public UISettings()
{
ItemTable = new ItemTable();
EffectiveItemPermissionTable = new EffectiveItemPermissionTable();
}
[XmlElement(Namespace = "Item")]
public ItemTable ItemTable { get; set; }
[XmlElement(Namespace = "Permissions")]
public EffectiveItemPermissionTable EffectiveItemPermissionTable { get; set; }
}
जब यहां लागू किया यह आपके धारावाहिक उत्पादन होगा::
ओह मेरा ... काम करता है! धन्यवाद। लेकिन मुझे नामस्थान निर्दिष्ट करने की आवश्यकता क्यों है? सीरिएलाइज़र सिर्फ संपत्ति नाम का नामस्थान के रूप में क्यों उपयोग नहीं करता है? – ViRuSTriNiTy
खैर, धारावाहिक डिफ़ॉल्ट रूप से नेमस्पेस का उपयोग नहीं करता है और जब आवश्यक हो तो उन्हें उत्पन्न करना अधिक परिदृश्य को तोड़ देगा। नेमस्पेस उस अर्थ में सी # में नेमस्पेस के समान हैं। इससे कोई फर्क नहीं पड़ता कि 'लेबल' सिस्टम से आ रहा है। Windows.Forms या System.Web.WebControls नामस्थान। – rene
ठीक है, लेकिन डिस्प्लेमोड नोड्स में 'xmlns' विशेषता जोड़ने के लिए भी क्यों आवश्यक है? कोई विशिष्ट कारण? – ViRuSTriNiTy