【发布时间】:2013-02-02 17:57:06
【问题描述】:
我的程序中有一个名为SortableObservableCollection<T> 的类,它继承自ObservableCollection<T>。它有一个名为Sort的函数:
public void Sort<TKey>( Func<T, TKey> keySelector, int skip = 0 )
{
// . . .
}
我想声明一个名为Key1 的属性,类型为Func<T, TKey>。我试过了:
public Func<T, TKey> Key1<T, TKey> { get; set; }
但我在左大括号上遇到语法错误。该错误表明编译器需要一个左括号。我尝试将其设为字段声明:
public Func<T, TKey> Key1<T, TKey>;
但是编译器在分号上给了我同样的信息。
声明此属性的正确语法是什么?
【问题讨论】:
-
属性不能像方法那样是通用的,例如Why does C# not allow generic properties?。如果属性位于泛型类(或结构或接口)中,则属性的类型当然可能取决于包含类的类型参数,但属性不能像泛型方法那样引入新的类型参数。
-
@JeppeStigNielsen:谢谢。虽然我没有阅读全部内容,但您提供的链接解释了为什么我不能做我想做的事。
标签: c#