我知道可以将一个项目列表从一种类型转换为另一种类型(假设您的对象有一个公共静态显式运算符方法来执行转换),一次一个:
List<Y> ListOfY = new List<Y>();
foreach(X x in ListOfX)
ListOfY.Add((Y)x);
Run Code Online (Sandbox Code Playgroud)
但是不可能一次投出整个列表吗?例如,
ListOfY = (List<Y>)ListOfX;
Run Code Online (Sandbox Code Playgroud) 我有一个DataSource在我的控制这始终是一个List<T>地方T有继承IEntity.
public class MyClass<T> where T : IEntity
{
public List<T> DataSource
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,显然你不能去做一个以下List<T>的List<IEntity>事情:
List<IEntity> wontWork = (List<IEntity>)this.DataSource;
Run Code Online (Sandbox Code Playgroud)
如何将DataSource作为List的列表IEntity,同时仍然可以添加和删除项目DataSource?即我可以执行以下操作,但从List中删除它不会从DataSource中删除:
public List<TOut> GetDataSourceCopyAsUnderlyingType<TOut>()
{
if (this.DataSource == null)
{
return new List<TOut>();
}
else
{
// Get the list and the enumerator
IList list = (IList)this.DataSource;
IEnumerator enumerator = list.GetEnumerator();
// Build the target list
List<TOut> targetList = new List<TOut>();
int …Run Code Online (Sandbox Code Playgroud)