我有几堂课
Square : Rectangle : Shape (abstract)
Run Code Online (Sandbox Code Playgroud)
我有一个继承自ApiController的基本控制器,我想使用它.
public abstract class BaseController<T> : ApiController where T : class
{
public abstract IEnumerable<T> Get()
...
}
Run Code Online (Sandbox Code Playgroud)
和
public class DerivedController : BaseController<Rectangle>
{
public override IEnumerable<Rectangle> Get()
...
}
public class AnotherDerivedController : BaseController<Square>
{
public new IEnumerable<Square> Get()
...
}
Run Code Online (Sandbox Code Playgroud)
/ api/rectangle将正确调用 IEnumerable<Rectangle> Get()
/ api/square会给我一个错误:
Multiple actions were found that match the request:
System.Linq.IEnumerable`1[Square] Get() on type Web.Api.Controllers.AnotherDerivedController
System.Linq.IEnumerable`1[Rectangle] Get() on type Web.Api.Controllers.DerivedController
Run Code Online (Sandbox Code Playgroud)
如果我public new IEnumerable<Square> Get()改为 …
有没有办法可以用现有项目初始化类中的列表?
我基本上想要实例化一个类对象并初始化一个列表,其中包含现有和新项目中已有的一些元素.
public class Item
{
public string Property {get; set;}
}
public class MyClass
{
public virtual IEnumerable<Item> Items {get; set;}
}
var itemToAdd = context.Items( i => i.Property == "Desired" );
MyClass myclass = new MyClass()
{
Items = new List<Item>()
{
new List<Item> (),
{
Property = "New"
},
// Would like itemToAdd to be added here when I create a new List.
}
};
Run Code Online (Sandbox Code Playgroud)