是否可以将List<Document>
转换为Documents : List<Document>
例如,我有一个看起来像这样的类:
public class Documents : List<Document>
{
}
但我需要将List<Document>
转换为Documents
。
(缺乏相关信息让我相信这是不可能的,或者我严重误用了这些物品。
答案 0 :(得分:1)
目前没有默认的内置方式可以将List<Object>
投射到Objects : List<object>
,但您可以kind of clone列表:
public static Documents CastToDocuments(this List<Document> docs)
{
var toRet = new Documents();
toRet.AddRange(docs);
return toRet;
}
我还强烈建议您阅读另一个已经问过Why not inherit from List<T>?
的问题我的想法是,您可以在Documents
课程中添加私人列表,并实施 basic list logic
和ToList()
方法:
/// <summary>
/// Represents a list of documents.
/// </summary>
public class Documents
{
/// <summary>
/// Initialises the private list of documents.
/// </summary>
public Documents()
{
_docs = new List<Document>();
}
/// <summary>
/// Add a speified document.
/// </summary>
/// <param name="doc">This document will be added to the saved documents.</param>
public void Add(Document doc)
{
_docs.Add(doc);
}
/// <summary>
/// Remove a specific document.
/// </summary>
/// <param name="doc">This document will be removed from the saved documents.</param>
public void Remove(Document doc)
{
_docs.Remove(doc);
}
/// <summary>
/// Removes all saved documents.
/// </summary>
public void Clear()
{
_docs.Clear();
}
/// <summary>
/// "Casts" this instance to a list of documents.
/// </summary>
/// <returns>Returns all documents inside a list.</returns>
public List<Document> ToList() => _docs;
/// <summary>
/// A list of documents.
/// </summary>
private readonly List<Document> _docs;
}
由于以下好处,这似乎更好用:
Document
答案 1 :(得分:0)
您不能将基类的对象一般转换为派生类,特别是List<T>
转换为MyType : List<T>
。
不改变设计的唯一选择是构造Documents
的新实例并将原始列表中的项添加到该新实例(可能存在将列表作为参数的构造函数)。