2011-05-16 2 views
0

Quelqu'un peut-il regarder cela et me dire ce que je fais mal? J'ai un problème avec l'implémentation des méthodes GetEnumerator, j'ai trouvé un moyen de faire en sorte que l'EDI crée toutes les méthodes pour que je puisse apprendre à les contourner. Quelqu'un peut-il aider à compléter la classe ProductCollection afin que je puisse mieux le comprendre.IDictionary <int, MyClass> Collection personnalisée

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(); 
} 

}


Après plus d'une semaine j'ai un objet de classe de dictionnaire personnalisé pour un produit qui peut être binded à une source de données avec des casting. Est-ce que quelqu'un d'autre voit un problème ou un moyen d'améliorer cela?

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

Lire le message d'erreur! Cela vous dit exactement ce qui ne va pas. Je souhaite que toutes mes erreurs de compilation soient aussi déclaratives. – Nix

+0

Le code que vous avez posté ne semble pas correspondre à ce message d'erreur. ProductCollection fait référence à des membres inexistants 'this.List' et' base.List' par exemple, ainsi qu'à d'autres erreurs. – Thorarin

+0

J'ai eu l'IDE créer cette classe, n'importe qui peut aider avec toute la méthode NotImplementedException. – Cpurepair785

Répondre

2

Essayez d'ajouter ceci à ProductEnumerator

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

Je pense qu'il se plaint parce que vous ne l'avez pas complètement défini l'interface IEnumerable.

Questions connexes