Any Class (or, in C#, Struct) that
implements an Interface must implement all Properties and Methods (and Indexers, and Events) specified in the Interface (C# interfaces do not allow Fields).
Keep in mind that a C# Interface is not a Class, or, a value, or reference, Type. While you can call some methods of 'Object on an Interface, like 'ToString(), the "nature" of an Interface is rather unique in .NET: see these comments by Jon Skeet: [
^].
An Interface can inherit from another Interface, and I suggest you look at this as being an example of "extension;" and, you can use generic Type declaration(s) with an Interface:
public interface IController
{
string Name { set; get; }
}
public interface IControllerItems<T> : IController
{
List<T> Items { set; get; }
int ModelNumber { set; get; }
void AddItem(T item);
}
So, an Interface is a contract, a promise that you will implement, a demand that you must implement; I suggest you think of that as different from "inheritance" of Classes.
Once you have implemented an Interface in a Class, to what extent you make use of every Property and Method you've implemented is ... up to you.
Problem here. To be continued ...