C# 将接口用作类型时出错

C# 将接口用作类型时出错,c#,visual-studio,linq-to-sql,C#,Visual Studio,Linq To Sql,我使用SQL查询查询一个表(表是动态决定的)。所有表都实现了ITableIsFile接口。下面是有问题的代码 string sql = "Select * from " + file + " where userID = '" + currAgentTM.systemuserid.Value + "' and CallStatusID = null"; var records = appelsDataContext.ExecuteQ

我使用SQL查询查询一个表(表是动态决定的)。所有表都实现了ITableIsFile接口。下面是有问题的代码

            string sql = "Select * from " + file + " where userID = '" + currAgentTM.systemuserid.Value
            + "' and CallStatusID = null";
        var records = appelsDataContext.ExecuteQuery<ITableIsFile>(sql);
string sql=“从“+file+”中选择*,其中userID=”+currAgentTM.systemuserid.Value
+“'和CallStatusID=null”;
var records=appelsDataContext.ExecuteQuery(sql);
在最后一行,我得到了以下错误:“MRS_Admin.ITableIsFile”类型必须声明一个默认(无参数)构造函数才能在映射期间构造

据我所知(并经过测试),在接口中实现构造函数是不可能的

感谢您提供的任何帮助,非常感谢。
Mathieu

您必须将接口的实现与无参数构造函数一起使用。

您必须将接口的实现与无参数构造函数一起使用。

TResult必须是数据上下文能够将返回集映射到的具体类。


TResult必须是一个具体的类,数据上下文可以将返回集映射到该类。

我认为AS-CII意味着您应该从接口创建一个基类,并使用该类型。例如,而不是:

interface ISomething { }

class SomethingOne : ISomething { }

class SomethingTwo : ISomething { }
尝试:


但是请注意这里备注部分的要求

我认为AS-CII意味着您应该从接口创建一个基类,并使用该类型。例如,而不是:

interface ISomething { }

class SomethingOne : ISomething { }

class SomethingTwo : ISomething { }
尝试:


但请注意此处备注部分的要求

我认为您可能需要提供一个实现接口的具体类,而不是直接实现接口。但我不知道将查询哪个表。或者可能我没有使用最好的查询方式?如果您选择使用字符串sql语句,我会删除linq上下文并直接将返回的原始数据集映射到对象,可能是使用反射。我认为您可能需要提供一个实现接口的具体类,不是直接的界面,但是我不知道要查询哪个表。或者可能我没有使用最好的查询方式?如果您选择使用字符串sql语句,我会删除linq上下文并直接将返回的原始数据集映射到对象,可能是通过反射。如果我向接口添加构造函数,我得到:接口不能包含构造函数事实上,您不必在接口中放置构造函数。你必须在一个具体的类中实现这个接口。如果我在接口中添加一个构造函数,我得到:接口不能包含构造函数事实上你不必把构造函数放在你的接口中。你必须在一个具体的类中实现接口。哦,我明白你的意思。对不起,我没有仔细阅读。我正在重新测试,它似乎有效。ThanxOh,我明白你的意思。对不起,我没有仔细阅读。我正在重新测试,它似乎有效。塔克斯