从列表派生的类

时间:2011-12-02 23:28:07

标签: c#

我有一个从通用列表派生的C#类

public class CostCodes : List<CostCode>
{

    public CostCodes() : base()
    {
        Add(new CostCode { Description = "DOM0010 Fall Arr", ID = 1599 });
        Add(new CostCode { Description = "DOM0020 Acoustics", ID = 1600 });
    }

当我尝试在此派生类上使用Find方法时,intellisense中不会出现find方法。

var codes = new CostCodes();

CostCode costCode = codes.Find(...

想出问题是由测试silverlight项目中的类引起的。把它们移出去了,但知道为什么会有所作为会很好。

- 更新 -

还不能回答我自己的问题,但对于那些感兴趣的人,这篇文章说明了为什么

http://forums.silverlight.net/t/67428.aspx/1

显然在silverlight项目中没有Find方法。您必须使用linq和“first”方法而不是find

using System.Linq;

var costCode = codes.First(cc => cc.ID == id);

2 个答案:

答案 0 :(得分:4)

这是intellisense的问题吗?

编译好:

public class CostCode {
    public string Description { get; set; }
}

public class CostCodes : List<CostCode> {
    public CostCodes()
        : base() {
        Add(new CostCode {Description = "DOM0010 Fall Arr"});
        Add(new CostCode {Description = "DOM0020 Acoustics"});
    }
}

// In another class...
public static void Main(string[] argStrings) {
    CostCodes s = new CostCodes();
    var hasDescription = s.Find(cc => cc.Description != null);
}

答案 1 :(得分:0)

Find()方法应出现在intellisense中。

我只能假设您的行var codes = new CostCodes();可能在不同的命名空间中引用名为CostCodes的类型。

试试这个:

var codes = new Full.Namespace.CostCodes();