2015-02-18 7 views
0

Что я хочу достичь, это просто, у меня есть интерфейс IDatasource, который имеет свойство DatasourceSettingsЯвная реализация свойств

public interface IDatasource 
{ 
    DatasourceSettings DatasourceSettings { get; set; } 
} 

реализующего класса выглядит следующим образом

public class TestDatasource : IDatasource 
{ 
    public DatasourceSettings IDatasource.DatasourceSettings { get { return DatasourceSettings; } set { DatasourceSettings = (TestDatasourceSettings)value; } } 
    public TestDatasourceSettings DatasourceSettings { get; set; } 
} 

Как вы можете возможно, это свойство впервые реализовано в явном виде, и оно должно вернуть DatasourceSettings Свойство самого класса

Так дальше, вот что я хочу, чтобы достичь

var ds = new TestDatasource(); 

if (ds.DatasourceSettings is TestDatasourceSettings && 
    ((IDatasource)ds).DatasourceSettings is DatasourceSettings) 
{ 
    // should be true 
} 

Я получаю ошибку:

The modifier 'public' is not valid for this item 

Так что тут не так?

ответ

1

Удалите public из

public DatasourceSettings IDatasource.DatasourceSettings 

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

0
public class TestDatasource : IDatasource 
{ 
    DatasourceSettings IDatasource.DatasourceSettings { get { return DatasourceSettings; } set { DatasourceSettings = (TestDatasourceSettings)value; } } 
    public TestDatasourceSettings DatasourceSettings { get; set; } 

}

Если бы ту же ошибку, в последнее время ... Оказывается, если реализация явно не напишешь модификатор доступа.

 Смежные вопросы

  • Нет связанных вопросов^_^