小编mil*_*osz的帖子

在C#6中突破方法重载决策的变化 - 解释?

我们最近从公司的VS2013搬到了VS2017.升级后,我们的代码库将不再构建.我们会收到以下错误:

以下方法或属性之间的调用不明确:'IRepository <T> .Get(object,params Expression <Func <T,object >> [])'和'IRepository <T> .Get(object,params string [] )"

这是呼叫本身:

this.mainRepository.Get(newEntity.Id);
Run Code Online (Sandbox Code Playgroud)

...和接口定义:

public interface IRepository<T> where T : class
{
    T Get(object id, params Expression<Func<T, object>>[] includeExprs);
    T Get(object id, params string[] includeExprs);
}
Run Code Online (Sandbox Code Playgroud)

我想知道这里是否有人可以解释为什么会这样.我怀疑C#6.0 的新改进方法重载解析功能,但查看语言规范我无法找出导致该问题的确切规则.

编辑

我写了一篇关于这个问题的后续博客文章:http://codewithstyle.info/method-overload-resolution-in-c-6-0-an-interesting-bug-story

c# overload-resolution c#-6.0

31
推荐指数
1
解决办法
1409
查看次数

如何在代码中使用Visual Studio中创建的数据连接?

是否可以访问代码中添加到项目中的数据连接?

我知道可以访问使用可视化设计器创建的DataSet,但我只想访问连接.

编辑:

可以通过工具>连接到数据库将数据连接添加到VS2008中的项目.

我想在我的代码中访问此连接作为对象,这样我就不必自己指定连接字符串.

.net settings database-connection visual-studio-2008

4
推荐指数
1
解决办法
8916
查看次数