属性的显式实现
Explicit implementation of properties
我想要实现的很简单,我有一个接口 IDatasource
,它有一个名为 DatasourceSettings
的 属性
public interface IDatasource
{
DatasourceSettings DatasourceSettings { get; set; }
}
实现 Class 看起来像这样
public class TestDatasource : IDatasource
{
public DatasourceSettings IDatasource.DatasourceSettings { get { return DatasourceSettings; } set { DatasourceSettings = (TestDatasourceSettings)value; } }
public TestDatasourceSettings DatasourceSettings { get; set; }
}
正如您可能看到的,属性 首先是显式实现的,它应该 return class 本身的 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
所以这里有什么问题?
public class TestDatasource : IDatasource
{
DatasourceSettings IDatasource.DatasourceSettings { get { return DatasourceSettings; } set { DatasourceSettings = (TestDatasourceSettings)value; } }
public TestDatasourceSettings DatasourceSettings { get; set; }
}
最近犯了同样的错误...事实证明,如果实现是显式的,你就不会写访问修饰符。
从
中删除 public
public DatasourceSettings IDatasource.DatasourceSettings
因为它明确地实现了一个接口方法,所以它是先验的public
我想要实现的很简单,我有一个接口 IDatasource
,它有一个名为 DatasourceSettings
public interface IDatasource
{
DatasourceSettings DatasourceSettings { get; set; }
}
实现 Class 看起来像这样
public class TestDatasource : IDatasource
{
public DatasourceSettings IDatasource.DatasourceSettings { get { return DatasourceSettings; } set { DatasourceSettings = (TestDatasourceSettings)value; } }
public TestDatasourceSettings DatasourceSettings { get; set; }
}
正如您可能看到的,属性 首先是显式实现的,它应该 return class 本身的 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
所以这里有什么问题?
public class TestDatasource : IDatasource
{
DatasourceSettings IDatasource.DatasourceSettings { get { return DatasourceSettings; } set { DatasourceSettings = (TestDatasourceSettings)value; } }
public TestDatasourceSettings DatasourceSettings { get; set; }
}
最近犯了同样的错误...事实证明,如果实现是显式的,你就不会写访问修饰符。
从
中删除public
public DatasourceSettings IDatasource.DatasourceSettings
因为它明确地实现了一个接口方法,所以它是先验的public