接口实现莫名其妙地将List <t>转换为List <libary.t> C#

时间:2018-06-26 15:43:12

标签: c# .net-core

我无法实现此功能,因为它是从C#.NET Core 2.0.1中的通用方法派生的,如下所示:

接口

public interface IListable 
{
    List<T> AsList<T>();
}

实施

public class PwActivityTypeCollection : IListable 
{
    public List<PwActivityType> user;
    public List<PwActivityType> system;
    public List<PwActivityType> AsList<PwActivityType>() 
    {
      return user.Concat (system).ToList();
    }
}

请注意,在尝试实现该接口之前,此方法可以按以下方式正常工作。 Concat代码按预期返回List<PwActivityType>

public List<PwActivityType> AsList() 
{
    return user.Concat(system).ToList();
}

错误:

  

PwActivityType.cs(16,14):错误CS0029:无法将类型'System.Collections.Generic.List '隐式转换为'System.Collections.Generic.List '[/ Users / shanekenyon / Documents / git / gls_int_prosperworks / library / library.csproj]

1 个答案:

答案 0 :(得分:5)

我认为您真正想要的是使接口通用而不是方法,例如:

public interface IListable<T>
{
    List<T> AsList();
}

这会使您的班级像这样:

public class PwActivityTypeCollection : IListable<PwActivityType>
{
    public List<PwActivityType> user;
    public List<PwActivityType> system;

    public List<PwActivityType> AsList()
    {
        return user.Concat(system).ToList();
    }
}