【发布时间】:2021-06-16 07:30:24
【问题描述】:
我的班级低于LibrarySourceTableInput 并且具有这样的结构
public class LibrarySourceTableInput<T> where T: ISourceOfData
{
public LibrarySourceTableInput(List<T> libraries, string mappedLibrarySource)
{
this.LibrarySourceRowInputs = libraries?.Select(l => new LibrarySourceRowInput()
{
LibrarySourceId = l.Id,
SourceOfDataId = l.SourceOfData.Id
}).ToList() ?? new(),
this.MappedLibrarySource = mappedLibrarySource;
}
public List<LibrarySourceRowInput> LibrarySourceRowInputs { get; set; }
public string MappedLibrarySource { get; set; }
}
然后接口ISourceOfData结构如下所示
public interface ISourceOfData : IIdentity
{
public new Guid Id { get; set; }
public CodeStandardGuideline SourceOfData { get; set; }
}
我正在像这样在其他地方调用上面的类构造函数
var mechanicalData = spaceTypeObject.TargetObject.MechanicalData;
var librarySourceTableInputs = new List<LibrarySourceTableInput<ISourceOfData>>
{
new LibrarySourceTableInput<ISourceOfData>(mechanicalData?.Environments, mappedLibrarySource), // I am getting conversion error here
new LibrarySourceTableInput<ISourceOfData>(mechanicalData?.AirflowsA621 , mappedLibrarySource)
.......
.......
}
mechanicaldata.environments 的结构是这样的
public class MechanicalData
{
public List<LibraryEnvironment> Environments { get; set; }
public List<LibraryA621> AirflowsA621 { get; set; }
.......
}
然后最后一个 libraryEnvironment 类是这样的
public class LibraryEnvironment : ISourceOfData
{
public virtual CodeStandardGuideline SourceOfData { get; set; }
.....
......
public Guid Id {get; set;}
}
我在这一行遇到以下错误new LibrarySourceTableInput<ISourceOfData>(mechanicalData?.Environments, mappedLibrarySource)
错误是Cannot convert from Generic.List<LibraryEnvironment> to Generic.List<IsourceOfData>
任何人都可以让我知道或知道如何将该通用列表发送到该类构造函数,非常感谢。
【问题讨论】:
-
如果你绝对必须使用泛型类,你可能想看看这个问题:Collection of generic types
-
没关系,我发现只需要转换到相应的接口
标签: c# .net list linq generics