尝试将泛型 ID 传递给类构造函数



我有低于类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; }
}

然后接口CCD_ 2结构在下面看起来是这样的

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)
.......
.......
}

机械数据的结构。环境看起来像这个

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>

请任何人告诉我,或者关于如何将泛型列表发送到类构造函数的任何想法,非常感谢。

不要指定接口ISourceOfData(您的类已经知道该类型将具有该接口(,而是指定实际的类:

var librarySourceTableInputs = new List<LibrarySourceTableInput<LibraryEnvironment>>
{
new LibrarySourceTableInput<LibraryEnvironment>(mechanicalData?.Environments, mappedLibrarySource),
.......
.......
}

最新更新