我正在开发一个基于MVVM的库,我想将这个扩展方法合并到我的ObservableObject抽象类中。
public static ObservableObject FirstOrDefaultInstance(this IEnumerable<ObservableObject> items)
{
return items.FirstOrDefault() ?? new ObservableObject();
}
显然,这不起作用。但是我的派生类型如何通过它们自己的默认构造函数的实现来继承这个扩展?
答案 0 :(得分:2)
如果在调用中指定/推断具体类型适合您,则可以对泛型方法使用new()
generics constraint:
public static FirstOrDefaultInstance<T>(this IEnumerable<T> items)
where T: ObservableObject, new()
{
return items.FirstOrDefault() ?? new T();
}