.net 接口良好做法
拥有一个没有方法而只有属性的接口是一种好做法吗?如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。这与您是否拥有一组具有类似基本结构无关接口是否有方法。接口公开的成员应该由该接口的客户端的需求驱动。接口是否有方法并不重要。接口公开的成员应该由该接口客户端的需求驱动。想象一下,我们有两个不同的类,它们不是从同一个基础派生的:用户和业务。在我们项目的某个时候,我们决定用户和企业都需要引用地址的元素,例如Street1、Street2、City、State和Zip。我们还有一个代理类,它需要能够直接操作这些值,而不管它们是在哪个类中定义的 实现这一点的一种方法是创建一个接口,如c中的示例:.net 接口良好做法,.net,.net,拥有一个没有方法而只有属性的接口是一种好做法吗?如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。这与您是否拥有一组具有类似基本结构无关接口是否有方法。接口公开的成员应该由该接口的客户端的需求驱动。接口是否有方法并不重要。接口公开的成员应该由该接口客户端的需求驱动。想象一下,我们有两个不同的类,它们不是从同一个基础派生的:用户和业务。在我们项目的某个时候,我们决定用户和企业都需要引用地址的元素,例如Street1、Street
public interface IHasAddress {
public string Street1 { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
现在,我们可以在另一个类中有一个方法,该方法执行以下操作:
public static class Test {
public static void CheckZip(IHasAddress addressContainer) {
if (addressContainer == null) return;
if (addressContainer.Zip == "33314") addressContainer.State = "FL";
}
}
只要用户和企业都实现IHasAddress接口,以下代码将按预期编译和工作:
User user = new User();
Business business = new Business();
Test.CheckZip(user);
Test.CheckZip(business);
这是一个纯粹的理论问题/解决方案,但它确实证明了对这种结构的完美需求。想象一下,我们有两个不同的类,它们不是来自同一个基础:用户和企业。在我们项目的某个时候,我们决定用户和企业都需要引用地址的元素,例如Street1、Street2、City、State和Zip。我们还有一个代理类,它需要能够直接操作这些值,而不管它们是在哪个类中定义的 实现这一点的一种方法是创建一个接口,如c中的示例:
public interface IHasAddress {
public string Street1 { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
现在,我们可以在另一个类中有一个方法,该方法执行以下操作:
public static class Test {
public static void CheckZip(IHasAddress addressContainer) {
if (addressContainer == null) return;
if (addressContainer.Zip == "33314") addressContainer.State = "FL";
}
}
只要用户和企业都实现IHasAddress接口,以下代码将按预期编译和工作:
User user = new User();
Business business = new Business();
Test.CheckZip(user);
Test.CheckZip(business);
这纯粹是一个理论问题/解决方案,但是它确实证明了对这种结构的完美需求。在Java中,这是一种常见的方法,在得到正确的枚举之前定义一组相关常量。在Java中,这是一种常见的方法,在得到正确的枚举之前定义一组相关常量。我看不出有什么问题。如果您的应用程序需要一个契约来实现一组属性,那么就这样吧。我看不出有什么问题。如果您的应用程序需要一个契约来实现一组属性,那么就这样吧。不要忘记,属性只不过是通常命名为get\u PropertyName或set\u PropertyName的方法
所以不,我认为只有属性的接口没有问题。它们仍然是方法。不要忘记,属性只不过是通常命名为get\u PropertyName或set\u PropertyName的方法 所以不,我认为只有属性的接口没有问题。它们仍然是方法