Книга: C# 2008 Programmer

Extending Interfaces

Extending Interfaces

You can extend interfaces if you need to add new members to an existing interface. For example, you might want to define another interface named IManager to store information about managers. Basically, a manager uses the same members defined in the IPerson interface, with perhaps just one more additional property — Dept. In this case, you can define the IManager interface by extending the IPerson interface, like this:

interface IPerson {
 string Name { get; set; }
 DateTime DateofBirth { get; set; }
 ushort Age();
}
interface IManager : IPerson {
 string Dept { get; set; }
}

To use the IManager interface, you define a Manager class that implements the IManager interface, like this:

public class Manager : IManager {
 //---IPerson---
 public string Name { get; set; }
 public DateTime DateofBirth { get; set; }
 public ushort Age() {
  return (ushort)(DateTime.Now.Year - this.DateofBirth.Year);
 }
 //---IManager---
 public string Dept { get; set; }
}

The Manager class now implements all the members defined in the IPerson interface, as well as the additional member defined in the IManager interface. You can use the Manager class like this:

Manager m1 = new Manager() {
 Name = "John",
 DateofBirth = new DateTime(1970, 7, 28),
 Dept = "IT"
};
Console.WriteLine(m1.Age());

You can also extend multiple interfaces at the same time. The following example shows the IManager interface extending both the IPerson and the IAddress interfaces:

interface IManager : IPerson, IAddress {
 string Dept { get; set; }
}

The Manager class now needs to implement the additional members defined in the IAddress interface:

public class Manager : IManager {
 //---IPerson--- 
 public string Name { get; set; }
 public DateTime DateofBirth { get; set; }
 public ushort Age() {
  return (ushort)(DateTime.Now.Year - this.DateofBirth.Year);
 }
 //---IManager---
 public string Dept { get; set; }
 //---IAddress--- 
 public string Street { get; set; }
 public uint Zip { get; set; }
 public string State() {
  //---some implementation here---
  return "CA";
 }
}

You can now access the Manager class like this:

Manager m1 = new Manager() {
 Name = "John",
 DateofBirth = new DateTime(1970, 7, 28),
 Dept = "IT",
 Street = "Kingston Street",
 Zip = 12345
};
Console.WriteLine(m1.Age());
Console.WriteLine(m1.State());

Оглавление книги


Генерация: 1.496. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз