2011-05-16 73 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接口。