Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 接口良好做法_.net - Fatal编程技术网

.net 接口良好做法

.net 接口良好做法,.net,.net,拥有一个没有方法而只有属性的接口是一种好做法吗?如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。这与您是否拥有一组具有类似基本结构无关接口是否有方法。接口公开的成员应该由该接口的客户端的需求驱动。接口是否有方法并不重要。接口公开的成员应该由该接口客户端的需求驱动。想象一下,我们有两个不同的类,它们不是从同一个基础派生的:用户和业务。在我们项目的某个时候,我们决定用户和企业都需要引用地址的元素,例如Street1、Street

拥有一个没有方法而只有属性的接口是一种好做法吗?

如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。

如果您打算拥有一组具有类似基本结构的数据对象,这是有意义的。

这与您是否拥有一组具有类似基本结构无关接口是否有方法。接口公开的成员应该由该接口的客户端的需求驱动。

接口是否有方法并不重要。接口公开的成员应该由该接口客户端的需求驱动。

想象一下,我们有两个不同的类,它们不是从同一个基础派生的:用户和业务。在我们项目的某个时候,我们决定用户和企业都需要引用地址的元素,例如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);

这是一个纯粹的理论问题/解决方案,但它确实证明了对这种结构的完美需求。

想象一下,我们有两个不同的类,它们不是来自同一个基础:用户和企业。在我们项目的某个时候,我们决定用户和企业都需要引用地址的元素,例如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的方法

所以不,我认为只有属性的接口没有问题。它们仍然是方法