Я могу добавить DataMember к CollectionDataContract в WCF?

Если я правильно понимаю, все свойства класса относятся к типу string, но представляют другие типы данных (логические, целые или даты).

Мое предложение было бы создать класс FixtureBuilder с типами свойств, которые вы ожидаете. С Autfixture вы сможете генерировать случайные значения и затем преобразовывать их в представление CSV.

public class CsvData
{
    public string Enabled { get; set; }
    public string Quantity { get; set; }
    public string Price { get; set; }
}

public class CsvDataBuilder
{
    public bool Enabled { get; set; }
    public int Quantity { get; set; }
    public decimal Price { get; set; } 

    public CsvData ToCsvData()
    {
        return new CsvData
        {
            Enabled = Enabled.ToString(),
            Quantity = Quantity.ToString(),
            Price = Price.ToString()
        };
    }
}

Затем в тестах вы можете создать конструктор в

var dataFromCsv = new Fixture().Create<CsvDataBuilder>().ToCsvData();
13
задан Jeff Martin 23 January 2009 в 00:01
поделиться

2 ответа

Рабочее решение размещено на моем блоге:

http://borismod.blogspot.com/2009/04/wcf-collectiondatacontract -and.html

UPD: Спасибо за ваш комментарий, Джефф. Вот краткое описание здесь не универсального класса. Полное общее решение можно найти в новом посте в моем блоге: http://borismod.blogspot.com/2009/06/v2-wcf-collectiondatacontract-and.html


[DataContract(IsReference = true)]    
public class EntityCollectionWorkaround : ICollection 
    {

        #region Constructor
        public EntityCollectionWorkaround()
        {
            Entities = new List();
        } 
        #endregion

        [DataMember]
        public int AdditionalProperty { get; set; }

        [DataMember]
        public List Entities { get; set; }

        #region ICollection Members
          // Implement here members of ICollection by wrapping Entities methods
        #endregion

        #region IEnumerable Members
          // Implement here members of IIEnumerable by wrapping Entities methods
        #endregion

    }

12
ответ дан 2 December 2019 в 00:04
поделиться

Вы могли бы хотеть рассмотреть реализующую пользовательскую сериализацию для своего класса. Могло бы быть самым легким реализовать IXmlSerializable, произведите значения своего пользовательского свойства и затем используйте DataContractSerializer сериализировать экземпляры дочерних объектов в наборе к выводу.

3
ответ дан 2 December 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: