考虑以下接口
public interface ICustomData
{
String CustomData { set; get; }
}
根据 MSDN 文档,接口成员是自动公开的。
假设我现在想实现我的接口:
public class CustomDataHandler : ICustomData
{
}
这会在编译时中断,告诉我我没有实现“CustomData”
另一方面,这将起作用:
public class CustomDataHandler : ICustomData
{
public String CustomData { set; get; }
}
我的问题是:如果接口的成员自动公开,为什么我必须在类中声明实现?如果接口声明在语法上与类声明相同,为什么编译器不能从我的接口自动推断出来?
编辑:
我问的理由。想象一下您正在构建数据模型、实体等的场景。我可能会为这些模型编写一些接口,如下所示:
public interface IUserAccount
{
Guid Identity { set; get; }
String FirstName { set; get; }
String LastName { set; get; }
String EmailAddress { set; get; }
String Password { set; get; }
}
public interface IUserDataEntry
{
Guid DataIdentity { set; get; }
String DataName { set; get; }
String Data { set; get; }
}
像这样构建模型会简单得多:
public class UserAccount : IUserAccount
{
}
public class UserDataEntry : IUserDataEntry
{
}
public class Combined : IUserAccount, IUserDataEntry
{
}