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.
我在阅读有关 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.