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

Sha*_*ane 0 c# .net-core

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

接口

public interface IListable 
{
    List<T> AsList<T>();
}
Run Code Online (Sandbox Code Playgroud)

履行

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

请注意,在我尝试实现接口之前,这样可以正常工作.该Concat代码返回List<PwActivityType>预期:

public List<PwActivityType> AsList() 
{
    return user.Concat(system).ToList();
}
Run Code Online (Sandbox Code Playgroud)

错误:

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

Dav*_*idG 5

我认为你真正想要的是使你的界面通用而不是方法,例如:

public interface IListable<T>
{
    List<T> AsList();
}
Run Code Online (Sandbox Code Playgroud)

这让你的课堂成为这样的:

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

    public List<PwActivityType> AsList()
    {
        return user.Concat(system).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)