Получение несогласованной ошибки доступности в общедоступном интерфейсе

#c#

Вопрос:

Хорошо, я знаю, что это довольно распространенный вопрос, но ответ, казалось, всегда заключался в том, чтобы сделать интерфейс общедоступным. Ну, мой интерфейс общедоступен, и я получаю эту ошибку

Ошибка CS0050 Несогласованная доступность: возвращаемый тип «IEnumerablelt;loadDatagt; менее доступен, чем метод» ILoanSelector.СелектСериалы()’

Вот мой код.

 namespace EscrowAnalysis {  public interface ILoanSelector  {  IEnumerablelt;LoanDatagt; 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 IEnumerablelt;LoanDatagt; SelectSerials()  {  var result = new Listlt;LoanDatagt;();  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.

Комментарии:

1. Я предполагаю, что ваш LoanData класс является внутренним??

2. Это кажется мне странным. У вас есть селектор ILoanSelector интерфейса с IEnumerablelt;LoanDatagt;, а затем его объединение с селектором LOANS, в то время как общедоступный IEnumerablelt;LoanDatagt;lt;Loandatagt; SelectSerial встроен в тот же класс. Разве это не должно быть в своем собственном классе?

3. Убедитесь LoanData , что класс также объявлен как public .

Ответ №1:

Иду на риск здесь. Не уверен, что вы пытаетесь сделать. Но я думаю, что ты хочешь чего-то подобного:

 namespace EscrowAnalysis { public class foobar {  public IEnumerablelt;LoanDatagt; SelectSerials()  {  var result = new Listlt;LoanDatagt;();  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;  } }  public interface ILoanSelector {  IEnumerablelt;foobargt; GetFoobars; }  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;  }  } }