?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

新蒲京澳門賭場網站:WCF中的自定義集合

?

WCF Tips之一

聚攏元素類的定義如下:

public enum FileType

{

TXT,DOC,HTML,OTHER

}

[DataContract]

public class Document

{

private string m_localPath;

private string m_fileName;

private FileType m_fileType;

[DataMember]

public string LocalPath

{

get { return m_localPath; }

set { m_localPath = value; }

}

[DataMember]

public string FileName

{

get { ret新蒲京澳門賭場網站urn m_fileName; }

set { m_fileName = value; }

}

[DataMember]

public FileType FileType

{

get { return m_fileType; }

set { m_fileType = value; }

}

}

自定義聚攏DocumentList則實現了IList接口:

//which attribute should be applied here?

public class DocumentList:IList

{

private IList m_list = null;

public DocumentList()

{

m_list = new List();

}

#region IList Members

public int IndexOf(Document item)

{

return m_list.IndexOf(item);

}

public void Insert(int index, Document item)

{

m_list.Insert(index,item);

}

public void RemoveAt(int index)

{

m_list.RemoveAt(index);

}

public Document this[int index]

{

get

{

return m_list[index];

}

set

{

m_list[index] = value;

}

}

#endregion

#region ICollection Members

public void Add(Document item)

{

m_新蒲京澳門賭場網站list.Add(item);

}

public void Clear()

{

m_list.Clear();

}

public bool Contains(Document item)

{

return m_list.Contains(item);

}

public void CopyTo(Document[] array, int arrayIndex)

{

m_list.CopyTo(array,arrayIndex);

}

public int Count

{

get { return m_list.Count; }

}

public bool IsReadOnly

{

get { return m_list.IsReadOnly; }

}

public bool Remove(Document item)

{

return m_list.Remove(item);

}

#endregion

#region IEnumerable Members

public IEnumerator GetEnumerator()

{

return m_list.GetEnumerator();

}

#endregion

#region IEnumerable Members

IEnumerator IEnumerable.GetEnumerator()

{

return ((IEnumerable)m_list).Ge新蒲京澳門賭場網站tEnumerator();

}

#endregion

}

留意,對付自定義聚攏DocumentList而言,我們不能利用[DataContract]特點,否則會在辦事操作中無法返回精確的DocumentList工具。例如如下的辦事操作定義,實際上無法得到精確的DocumentList值:

[OperationContract]

[FaultContract(typeof(Dir新蒲京澳門賭場網站ectoryNotFoundException))]

DocumentList FetchDocuments(string homeDir);

我們應該為Doc新蒲京澳門賭場網站umentList施加[CollectionDataContract]或者[Serializable],建議采納前者。由于對付自定義聚攏而言,假如是泛型聚攏,還可以使用Name屬性擬訂導出元數據天生的類型名。不過,對付本例的聚攏而言,因為沒有泛型參數,則無所謂了。為了在導出元數據時識別聚攏的元素Document類型,當然,還必要施加KnowTypeAttribute,著末的定義改動如下:

[KnownType(typeof(Document))]

[CollectionDataContract]

[Serializable]

public class DocumentList:IList

{}

此時,客戶端利用法度榜樣可以直接應用數據左券,仍舊能夠識別。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

快三平台开户