如何在抽象类中实现扩展方法

时间:2016-04-17 00:11:31

标签: c#

我正在开发一个基于MVVM的库,我想将这个扩展方法合并到我的ObservableObject抽象类中。

public static ObservableObject  FirstOrDefaultInstance(this IEnumerable<ObservableObject> items)
   {
      return items.FirstOrDefault() ?? new ObservableObject();
   }

显然,这不起作用。但是我的派生类型如何通过它们自己的默认构造函数的实现来继承这个扩展?

1 个答案:

答案 0 :(得分:2)

如果在调用中指定/推断具体类型适合您,则可以对泛型方法使用new() generics constraint

public static FirstOrDefaultInstance<T>(this IEnumerable<T> items)
   where T: ObservableObject, new()
{
   return items.FirstOrDefault() ?? new T();
}