当前位置:  开发笔记 > 编程语言 > 正文

C#类型推断泛型方法类型参数,其中方法没有参数

如何解决《C#类型推断泛型方法类型参数,其中方法没有参数》经验,为你挑选了2个好方法。

给定以下通用接口和实现类:

public interface IRepository {
    // U has to be of type T of a subtype of T
    IQueryable Find() where U : T;
}

public class PersonRepository : IRepository {

}

如何在不指定U的情况下调用Find方法?

var repository = new EmployeeRepository();
// Can't be done
IQueryable people = repository.Find();

// Has to be, but isn't Employee a given in this context?
IQueryable people = repository.Find();

// Here I'm being specific
IQueryable managers = repository.Find();

换句话说,可以做些什么来获得类型推断?

谢谢!



1> Pop Catalin..:

如何在不指定U的情况下调用Find方法?

你不能.

不幸的是,C#的泛型方法重载决策基于返回值不匹配.

请参阅Eric Lippert关于它的博文: C#3.0返回类型推断在方法组上不起作用

但是写一个简单的方法就是使用var关键字.

var employees = repository.Find();



2> Adam Ralph..:

写作怎么样?

var people = repository.Find();

它以不同的方式节省了相同的打字量.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有