WPF 泛型接口的实现类的实例化
时间: 2024-12-04 07:24:32 浏览: 21
在Windows Presentation Foundation (WPF)中,泛型接口可以用来创建具有通用特性的组件。当你有一个接口定义了一组操作,这些操作接受不同类型的数据作为参数,那么你可以将这个接口声明为泛型,如`T INotifyPropertyChanged<T>`。然后,为了实例化这样的接口,你需要提供一个实现了该接口的具体类,其类型参数`T`应匹配接口需要的数据类型。
例如,如果你有一个接口`INotifyPropertyChanged`用于通知属性变化,你可能会有这样一个泛型实现:
```csharp
public interface INotifyPropertyChanged<T> : INotifyPropertyChanged
{
event PropertyChangedEventHandler<T> PropertyChanged;
}
```
实现类可能如下所示:
```csharp
public class ObservableObject<T> : INotifyPropertyChanged<T>
{
public event PropertyChangedEventHandler<T> PropertyChanged;
// 其他方法,如 SetProperty并触发PropertyChanged事件
protected void SetProperty<TProperty>(ref TProperty propertyField, TProperty newValue)
{
if (!EqualityComparer<T>.Default.Equals(propertyField, newValue))
{
propertyField = newValue;
OnPropertyChanged(propertyField);
}
}
private void OnPropertyChanged(T item)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(item)));
}
}
```
在这个例子中,当你需要一个支持属性更改通知的对象时,可以使用`ObservableObject<string>`、`ObservableObject<int>`等,根据实际需要传递的数据类型创建实例。
阅读全文