2011-05-16 67 views
0

任何人都可以看看这个并告诉我我做错了什么吗?我遇到了实现GetEnumerator方法的问题,我想出了一种让IDE创建所有方法的方法,以便我可以学习如何重写它们。任何人都可以帮助完成ProductCollection类,以便我可以更好地理解它。IDictionary <int,MyClass>自定义集合

using System; 
using System.Linq; 
using System.Collections; 
using System.Collections.Generic; 

/// <summary> 
/// Product 
/// </summary> 
[Serializable] 
public class Product 
{ 
    //0 _ItemNumber = null; 
    //1 _Title = null; 
    //2 _Author = null; 
    //3 _ISBN = null; 
    //4 _ItemMessage = null; 
    //5 _ISBNEAN = null; 
    //6 _SystemName = null; 
    //7 _ItemCategory = null; 
    //8 _AccessService = null; 
    //9 _AlternateItem = null; 
    //10 _FullTitle = null; 
    //11 _SalesAnalysisCode = null; 
    //12 _SACSummaryCode = null; 
    //13 _OwningOrganization = null; 
    //14 _ProductManager = null; 
    //15 _ProductFormat = null; 
    //16 _DefaultWarehouse = null; 
    //17 _ItemStatusCode = null; 
    //18 _AccessType = null; 
    //19 _SubstitutionReason = null; 
    //20 _Saleable = null; 
    //21 _OKToBackOrder = null; 
    //22 _Taxable = null; 
    //23 _ExcludeShipping = null; 
    //24 _Commissionable = null; 
    //25 _Package = null; 
    //26 _Royalty = null; 
    //27 _PrintOnDemand = null; 
    //28 _AllowDescriptionOverride = null; 
    private string[] _Product = new string[29]; 

    /// <summary> 
    /// Advantage Product Object 
    /// </summary> 
    public Product() 
    { 
    } 

    public string Title 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string Author 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ItemNumber 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ISBN 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ItemMessage 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ISBNEAN 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string AccessService 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string SystemName 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ItemCategory 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string AlternateItem 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string FullTitle 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string SalesAnalysisCode 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string SACSummaryCode 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string OwningOrganization 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ProductManager 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ProductFormat 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string DefaultWarehouse 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ItemStatusCode 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string AccessType 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string SubstitutionReason 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string Saleable 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string OKToBackOrder 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string Taxable 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string ExcludeShipping 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string Commissionable 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string Package 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string Royalty 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string PrintOnDemand 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string AllowDescriptionOverride 
    { 
     get 
     { 
      return _Product[0]; 
     } 
     set 
     { 
      _Product[0] = value; 
     } 
    } 

    public string[] ProductArray 
    { 
     get 
     { 
      return _Product; 
     } 
     set 
     { 
      _Product = value; 
     } 
    } 
} 


/// <summary> 
/// 
/// </summary> 
public class ProductCollection : IDictionary<int, Product> 
{ 
private Dictionary<int, Product> dictionaryProduct; 

public ProductCollection(int numberOfItem) 
{ 
    dictionaryProduct = new Dictionary<int, Product>(numberOfItem); 
} 

void IDictionary<int, Product>.Add(int productKey, Product productValue) 
{ 
    dictionaryProduct.Add(productKey, productValue); 
} 

bool IDictionary<int, Product>.ContainsKey(int productKey) 
{ 
    return dictionaryProduct.ContainsKey(productKey); 
} 

ICollection<int> IDictionary<int, Product>.Keys 
{ 
    get 
    { 
     return dictionaryProduct.Keys; 
    } 
} 

bool IDictionary<int, Product>.Remove(int productKey) 
{ 
    return (dictionaryProduct.Remove(productKey)); 
} 

bool IDictionary<int, Product>.TryGetValue(int productKey, out Product productValue) 
{ 
    return (dictionaryProduct.TryGetValue(productKey, out productValue)); 
} 

ICollection<Product> IDictionary<int, Product>.Values 
{ 
    get 
    { 
     return dictionaryProduct.Values; 
    } 
} 

Product IDictionary<int, Product>.this[int productKey] 
{ 
    get 
    { 
     return dictionaryProduct[productKey]; 
    } 
    set 
    { 
     dictionaryProduct[productKey] = value; 
    } 
} 

void ICollection<KeyValuePair<int, Product>>.Add(KeyValuePair<int, Product> productItem) 
{ 
    throw new NotImplementedException(); 
} 

void ICollection<KeyValuePair<int, Product>>.Clear() 
{ 
    dictionaryProduct.Clear(); 
} 

bool ICollection<KeyValuePair<int, Product>>.Contains(KeyValuePair<int, Product> productItem) 
{ 
    return (dictionaryProduct.Contains(productItem)); 
} 

void ICollection<KeyValuePair<int, Product>>.CopyTo(KeyValuePair<int, Product>[] productArray, int arrayIndex) 
{ 
    throw new NotImplementedException(); 
} 

int ICollection<KeyValuePair<int, Product>>.Count 
{ 
    get 
    { 
     return dictionaryProduct.Count; 
    } 
} 

bool ICollection<KeyValuePair<int, Product>>.IsReadOnly 
{ 
    get 
    { 
     throw new NotImplementedException(); 
    } 
} 

bool ICollection<KeyValuePair<int, Product>>.Remove(KeyValuePair<int, Product> productItem) 
{ 
    throw new NotImplementedException(); 
} 

IEnumerator<KeyValuePair<int, Product>> IEnumerable<KeyValuePair<int, Product>>.GetEnumerator() 
{ 
    throw new NotImplementedException(); 
} 

public IEnumerator<KeyValuePair<int, Product>> GetEnumerator() 
{ 
    throw new NotImplementedException(); 
} 

IEnumerator IEnumerable.GetEnumerator() 
{ 
    throw new NotImplementedException(); 
} 

}


经过此后的一个星期我有可以绑定到与铸造出一个数据源的产品的自定义词典类对象。有没有其他人看到一个问题或一种方法,使其更好?

using System; 
using System.Linq; 
using System.Collections; 
using System.Collections.Generic; 

[Serializable] 
public class Product 
{ 
// 0 _ItemNumber = null; 
// 1 _Title = null; 
// 2 _Author = null; 
// 3 _ItemNumber = null; 
// ..etc 

private string[] _Product = new string[29]; 

public Product() 
{ 
} 

public string Title 
{ 
    get 
    { 
     return _Product[1]; 
    } 
    set 
    { 
     _Product[1] = value; 
    } 
} 

public string Author 
{ 
    get 
    { 
     return _Product[2]; 
    } 
    set 
    { 
     _Product[2] = value; 
    } 
} 

public string ISBN 
{ 
    get 
    { 
     return _Product[3]; 
    } 
    set 
    { 
     _Product[3] = value; 
    } 
} 

public string ItemNumber 
{ 
    get 
    { 
     return _Product[4]; 
    } 
    set 
    { 
     _Product[4] = value; 
    } 
} 

} 

using System; 
using System.Linq; 
using System.Collections; 
using System.Collections.Generic; 

/// <summary> 
/// 
/// </summary> 
public class ProductCollection : DictionaryBase, IEnumerable 
{ 
public ProductCollection this[int productKey] 
{ 
    get 
    { 
     return ((ProductCollection)(Dictionary[productKey])); 
    } 
    set 
    { 
     Dictionary[productKey] = value; 
    } 
} 

public bool Contains(Product objectProduct) 
{ 
    return Dictionary.Contains(objectProduct); 
} 

public void Add(Product objectProduct) 
{ 
    Dictionary.Add(objectProduct.ItemNumber, objectProduct); 
} 

public void Remove(int productKey) 
{ 
    Dictionary.Remove(productKey); 
} 

IEnumerator IEnumerable.GetEnumerator() 
{ 
    foreach (Product productObject in this.Dictionary.Values) 
    { 
     yield return productObject; 
    } 
} 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Product objectProduct = new Product(); 
    objectProduct.Title = "Hello Title"; 
    objectProduct.Author = "Hello Author"; 
    objectProduct.ISBN = "Hello ISBN"; 
    objectProduct.ItemNumber = "Hello ItemNumber"; 

    ProductCollection productCollection = new ProductCollection(); 
    productCollection.Add(objectProduct); 

    rpProducts.DataSource = productCollection; 
    rpProducts.DataBind(); 
} 

<asp:Repeater ID="rpProducts" runat="server"> 
     <ItemTemplate> 
      <%# DataBinder.Eval(Container.DataItem, "Title") %> 
      <br /> 
      <%# DataBinder.Eval(Container.DataItem, "Author") %> 
     </ItemTemplate> 
    </asp:Repeater> 
+0

阅读错误信息!它告诉你到底什么是错的。我希望我所有的编译错误都是声明性的。 – Nix 2011-05-16 21:11:29

+0

您发布的代码似乎不符合此错误消息。 ProductCollection指的是不存在的'this.List'和'base.List'成员,以及其他一些错误。 – Thorarin 2011-05-16 21:32:02

+0

我有IDE创建这个类任何人都可以帮助所有的NotImplementedException方法。 – Cpurepair785 2011-05-17 16:29:00

回答

2

尝试增加这ProductEnumerator

public IEnumerator IEnumerable.GetEnumerator() 
{ 
    return (IEnumerator) GetEnumerator(); 
} 

我认为它的抱怨,因为你还没有完全定义IEnumerable接口。