相关疑难解决方法(0)

我可以在由XSD C#生成的类创建的XML中的同一标记处具有null属性和其他属性吗?

我有一堆C#类,它们是从XSD自动生成的.然后我基于那些C#类生成XML文件.到目前为止还没有任何东西

问题:

生成的XML文件正在通过验证,验证需要一个额外的属性到所有XML标签xsi:nil="true".基本上标签看起来应该像: <testTag.01 xsi:nil="true" NV="123123" />但我无法在C#中实现.我的代码是:

     if (myObject.TestTag.HasValue)
        {
            t.testTag01 = new testTag01();
            t.testTag01.Value = myObject.TestTag.Value;
        }
        //else
        //{
        //    t.testTag01 = new testTag01();
        //    t.testTag01.NV = "123123";//Not Recorded
        //}
Run Code Online (Sandbox Code Playgroud)

此代码生成<testTag.01>SomeValue</testTag.01><testTag.01 xsi:nil="true"/>.

如果我取消注释ELSE,结果将是:<testTag.01>SomeValue</testTag.01><testTag.01 NV="123123" />.

所以我不知道如何获得验证工具所需的格式.有任何想法吗 ?

PS

这是自动生成的C#类:

/// [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd","4.0.30319.33440")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code") ] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true,Namespace ="http://www.blabla.org")]

public partial class testTag01 {

private string nvField;

private SomeEnum valueField;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string NV …
Run Code Online (Sandbox Code Playgroud)

c# xml xsd

10
推荐指数
1
解决办法
1230
查看次数

扩展枚举,矫枉过正?

我有一个需要序列化为EDI格式的对象.对于这个例子,我们会说它是一辆汽车.汽车可能不是b/c选项随时间变化的最佳示例,但对于真实对象,Enums永远不会改变.

我有许多枚举,如下所示,应用了自定义属性.

public enum RoofStyle
{
    [DisplayText("Glass Top")]
    [StringValue("GTR")]
    Glass,
    [DisplayText("Convertible Soft Top")]
    [StringValue("CST")]
    ConvertibleSoft,
    [DisplayText("Hard Top")]
    [StringValue("HT ")]
    HardTop,
    [DisplayText("Targa Top")]
    [StringValue("TT ")]
    Targa,
}
Run Code Online (Sandbox Code Playgroud)

通过扩展方法访问属性:

public static string GetStringValue(this Enum value)
{
    // Get the type
    Type type = value.GetType();

    // Get fieldinfo for this type
    FieldInfo fieldInfo = type.GetField(value.ToString());

    // Get the stringvalue attributes
    StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes(
        typeof(StringValueAttribute), false) as StringValueAttribute[];

    // Return the first if there was a match.
    return attribs.Length > 0 ? attribs[0].StringValue …
Run Code Online (Sandbox Code Playgroud)

c# extension-methods enums attributes

4
推荐指数
1
解决办法
2792
查看次数

标签 统计

c# ×2

attributes ×1

enums ×1

extension-methods ×1

xml ×1

xsd ×1