【发布时间】:2021-11-13 07:59:23
【问题描述】:
好的,所以我知道这是一个常见的问题,但答案似乎总是将接口设置为公开。好吧,我的界面是公开的,我收到了这个错误
错误 CS0050 可访问性不一致:返回类型 'IEnumerable
这是我的代码。
namespace EscrowAnalysis
{
public interface ILoanSelector
{
IEnumerable<LoanData> SelectSerials();
}
class LoanSelector : ILoanSelector
{
public string ConnectionString { get; }
public string LinkedServer { get; private set; }
public LoanSelector(string connectionString, string linkedServer)
{
if (String.IsNullOrWhiteSpace(connectionString)) throw new ArgumentNullException(nameof(connectionString));
if (String.IsNullOrWhiteSpace(linkedServer)) throw new ArgumentNullException(nameof(linkedServer));
ConnectionString = connectionString;
LinkedServer = linkedServer;
}
public IEnumerable<LoanData> SelectSerials()
{
var result = new List<LoanData>();
using (var connection = new SqlConnection(ConnectionString))
{
var command = connection.CreateCommand();
command.CommandType = System.Data.CommandType.Text;
command.CommandText = @"SELECT LOAN_SERIAL,
CLOSE_DATE
FROM OPENQUERY(@linkedserver,'
SELECT
l.Serial AS LOAN_SERIAL,
l.CLOSE_DATE
FROM core.loan l
INNER JOIN core.account la ON la.serial = l.parent_serial
INNER JOIN core.person p ON p.serial = la.primary_person_serial
INNER JOIN core.ln_type lt ON lt.serial = l.type_serial AND lt.CRED_REP_PORTFOLIO_TYPE = ''M''
INNER JOIN core.share s ON s.serial = l.IMPOUND_SHARE_SERIAL AND s.TYPE_SERIAL IN (SELECT serial FROM core.sh_type st WHERE DESCRIPTION LIKE ''%Escrow%'')
INNER JOIN core.account sa ON sa.serial = s.PARENT_SERIAL
LIMIT 500
');".Replace("@linkedserver",LinkedServer);
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
LoanData tempObj = new LoanData(Convert.ToInt64(reader["LOAN_SERIAL"]), Convert.ToDateTime(reader["CLOSE_DATE"]));
result.Add(tempObj);
}
}
return result;
}
}
请帮忙,我不确定还需要做什么才能满足 VS。
【问题讨论】:
-
我猜你的
LoanData类是内部的?? -
这看起来让我很困惑。您有一个带有 IEnumerable
的 ILoanSelector 接口,然后将它与 LoanSelector 结合,同时将 Public IEnumerable SelectSerial 嵌入到同一个类中。那不应该在它自己的类中吗? -
确保
LoanData类也被声明为public。
标签: c#