Якщо ви переглянете збірки .NET Framework і перегляньте основні класи для будь-якого зі стандартних об'єктів, ви помітите багато інтерфейсів (учасників, названих як ISomeName).
Інтерфейси в основному для реалізації каркасів, великих чи малих. Я так само почувався щодо інтерфейсів, поки не захотів написати власний фреймворк. Я також виявив, що розуміння інтерфейсів допомогло мені засвоїти рамки набагато швидше. У той момент, коли ви хочете написати більш елегантне рішення практично нічого, ви побачите, що інтерфейс має багато сенсу. Це як метод дозволити класу одягнути відповідний одяг для роботи. Що ще важливіше, інтерфейси дозволяють системам стати набагато більш самодокументованими, оскільки складні об'єкти стають менш складними, коли клас реалізує інтерфейси, що допомагає класифікувати його функціональність.
Класи реалізують інтерфейси, коли хочуть мати можливість брати участь у рамках явно або неявно. Наприклад, IDisposable - це загальний інтерфейс, який забезпечує підпис методу для популярного та корисного методу Dispose (). У рамках, все, що вам або іншому розробникові потрібно знати про клас, це те, що якщо він реалізує IDisposable, то ви знаєте, що ((IDisposable) myObject) .Dispose () можна викликати для очищення.
КЛАСИЧНИЙ ПРИКЛАД: не реалізуючи інтерфейс IDisposable, ви не можете використовувати структуру ключових слів "using ()" у C #, оскільки це вимагає, щоб будь-який об'єкт, вказаний у якості параметра, можна неявно передати в IDisposable.
ПРИКЛАД КОМПЛЕКСУ: Більш складним прикладом може бути клас System.ComponentModel.Component. Цей клас реалізує як IDisposable, так і IComponent. Більшість, якщо не всіх, об’єктів .NET, з якими пов’язаний візуальний дизайнер, реалізують IComponent, щоб IDE змогла взаємодіяти з компонентом.
ВИСНОВОК: Коли ви більше ознайомитесь з .NET Framework, перше, що ви зробите, зіткнувшись з новим класом у браузері об’єктів або в інструменті .NET Reflector (безкоштовно) ( http://www.red-gate.com / products / reflector / ) має перевірити, від якого класу він успадковує, а також інтерфейси, які він реалізує. .NET Reflector навіть кращий, ніж браузер об’єктів, тому що він також дозволяє переглядати класи похідних. Це дозволяє дізнатися про всі об'єкти, що походять з певного класу, тим самим потенційно дізнавшись про функціональність фреймворку, про який ви не знали, що існує. Це особливо важливо, коли оновлені або нові простори імен додаються до .NET Framework.