仅处理属性时的接口与抽象类

时间:2017-04-10 07:46:17

标签: c# abstract

这不是技术障碍或挑战,我想说这是一般性的讨论!如果这是一个不合适的论坛,请告诉我,我将删除它..

我有一个场景,从webservice获取10 xml,每个XML几乎没有常见属性和该XML的特定属性。

类结构看起来类似于下面的

Public abstract class employee
{
     Public int Id {get; set;}
     Public int Name {get; set;}
 }

Public class PermanentEmployee: Employee
{
      // PermanentEmployee specific props
}

Public class ContractEmployee
{
      //Contractor​ specific properties
}

鉴于上述情况,员工类应该是抽象的还是应该是接口。哪个更好。

我将只有属性,没有方法。

我的观点:我会选择抽象类,因为我可以重用属性,因为没有方法,所以接口没有意义..

2 个答案:

答案 0 :(得分:1)

我想在多个“子类”中“重用”属性,我总是使用抽象类。

如果您只想定义方法签名而不是它的“逻辑主体”,那么请使用interface。

总之,您与我们分享的源代码,这将是我的方式。

答案 1 :(得分:0)

我将定义一个接口IEmployee以及抽象类。这使得接口的灵活性可以一般地传递​​,但是抽象类对于那些你不得不重复代码(DRY等)的情况很有用。

public interface IEmployee
{
    int Id { get; set;}
    int Name { get; set;}
}

public abstract class Employee : IEmployee
{
    public int Id { get; set;}
    public int Name { get; set;}
}

public class PermanentEmployee: Employee
{
     // PermanentEmployee specific props
}

public class ContractEmployee : Employee
{
    //Contractor​ specific properties
}