string
псевдоним в C# для System.String
.
Так технически, нет никакого различия. Это похоже int
по сравнению с [1 114] System.Int32
.
До инструкций, обычно рекомендуется использовать string
любое время, которое Вы отсылаете к объекту.
, например,
string place = "world";
Аналогично, я думаю, что обычно рекомендуется использовать String
, если необходимо обратиться конкретно к классу.
, например,
string greet = String.Format("Hello {0}!", place);
кажется, что руководство в этой области, возможно, изменилось, как [1 112], StyleCop теперь осуществляет использование определенных псевдонимов C#.
Ну, я нашел свой собственный ответ после того, как много играл с ним ... он должен быть в алфавитном порядке. поэтому, если класс имеет
[Serializable]
[DataContract(Namespace = "")]
public class SomeClass
{
[DataMember]
public string FirstName
{
get; set;
}
[DataMember]
public string LastName
{
get; set;
}
[DataMember]
private IDictionary<long, string> customValues;
public IDictionary<long, string> CustomValues
{
get { return customValues; }
set { customValues = value; }
}
}
, тогда xml следует определять в алфавитном порядке.
<?xml version="1.0" encoding="UTF-8"?>
<SomeClass>
<CustomValues>
<Value1>One</Value1>
<Value2>Two</Value2>
</CustomValues >
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</SomeClass>
ну почему h ... он должен быть в алфавитном порядке?
Для этого нужен атрибут Order
; Если у вас нет контроля над десериализуемым XML, это единственный обходной путь, о котором я знаю.
В вашем первом примере это будет
[Serializable]
[DataContract(Namespace = "")]
public class SomeClass
{
[DataMember(Order = 0)]
public string FirstName
{
get; set;
}
[DataMember(Order = 1)]
public string LastName
{
get; set;
}
[DataMember(Order = 2)]
private IDictionary customValues;
public IDictionary CustomValues
{
get { return customValues; }
set { customValues = value; }
}
}