无法解析符号T.

时间:2009-08-14 07:30:29

标签: c# wpf observablecollection

我的ObservableCollection类有问题。我无法解决这个问题。

using System.Collections.ObjectModel;

    #region ViewModelProperty: CustomerList
    private ObservableCollection<T> _customerList = new ObservableCollection<T>();
    public ObservableCollection<T> CustomerList
    {
      get
      {
        return _customerList;
      }

      set
      {
        _customerList = value;
        OnPropertyChanged("CustomerList");
      }
    }
    #endregion

我的ObservableCollection类继承了ViewModelBase:

  public abstract class ViewModelBase : INotifyPropertyChanged
  {
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
      PropertyChangedEventHandler handler = PropertyChanged;

      if (handler != null)
      {
        handler(this, new PropertyChangedEventArgs(propertyName));
      }
    }
  }

任何想法,问题出在哪里?

3 个答案:

答案 0 :(得分:2)

T只是一个占位符。您需要为T提供实际类型。

E.g。如果您有List<T>,则可以设置List<int>List<string>T是符合给定约束条件的任何其他类型)。即T在第一种情况下为int,在第二种情况下为string

答案 1 :(得分:0)

我认为,当您在Generics

上阅读时,您会清楚地知道

你可以这样做:

ObservableCollection<Customer> customerList = new ObservableCollection<Customer>()

然后,您有一个类型集合,它将能够存储Customer类的实例(以及从Customer继承的子类的实例)。 因此,如果您希望有一个集合,您希望能够添加多个类型的实例,您可以创建一个基类(或接口),并从该基类继承或实现此接口,并创建一个ObservableCollection例如

答案 2 :(得分:-1)

如前所述,T是占位符。你可能想要这样的东西:

private ObservableCollection<T> _customerList = new ObservableCollection < ClassYouWantObserved > ();