2

いくつかのクラス プロパティを に書き込んでいますXmlSchemaが、現時点では型を に書きたいと思ってい<xs:element type="xs:string">ます。

自分で書く必要がないマッピングクラスはありswitch-caseますか?

public class Foo
{
    public string Bar { get; set; }
}

public void WriteProperty()
{
    // get the property that is a string
    PropertyInfo barProperty;
    XmlSchemaElement barElement;

    // I don't want this huge switch case for all basic properties.
    switch(barProperty.PropertyType.FullName)
    {
        case "System.String":
            barElement.SchemaTypeName = new QualifiedName("xs:string");
            break;
        // also for int, and bool, and long....


        default:
            //do other stuff with types that are not default types
            break;
    }
}
4

1 に答える 1

0

.NET フレームワークには、必要なことを行うためのマッピング クラスや関数がありません。

大きなスイッチを使用する代わりに、マッピング ディクショナリを作成することをお勧めします。

static Dictionary<string, string> TypeMap = new Dictionary<string, string>() {
  { "System.String", "xs:string" },
  { "System.Int32", "xs:int" },
  . . . 
};

. . . 

  string schemaTypeName;
  if (TypeMap.TryGetValue(barProperty.PropertyType.FullName, out schemaTypeName)) {
    barElement.SchemaTypeName = new QualifiedName("xs:string");
  } else {
    //do other stuff with types that are not default types
  }
于 2013-09-18T15:14:14.463 に答える