Kinect 应用程序中函数参数内的泛型

Generics inside the function parameters in Kinect app

我在阅读有关 Kinect 的内容时发现了这段代码:

using System;
using System.ComponentModel;
using System.Linq.Expressions;

namespace Kinect.Toolbox {

 public abstract class Notifier: INotifyPropertyChanged {

  public event PropertyChangedEventHandler PropertyChanged;

  protected void RaisePropertyChanged < T > (Expression < Func < T >> propertyExpression) {

        var memberExpression = propertyExpression.Body as MemberExpression;

        if (memberExpression == null)
            return;

        string propertyName = memberExpression.Member.Name;

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

我能理解一点,但我想知道泛型在这里是如何工作的:

protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)

Linq Expression 值得一看。

Provides the base class from which the classes that represent expression tree nodes are derived.

This is a good resource for combining the generics with expression, it goes through an example

它是委托类型的参数('Func' 是。它也可以使用 'Action' 或 'Predicate',因为它们是一种委托类型)并且 Func< T > 表示您的委托将 return 一种 T.