Comments 6
В чем отличие от абстрактных классов, кроме множественного наследования?
+1
В этом C# интерфейсы и расходятся с концепцией миксинов (насколько я их понимаю, миксины концептуально могут хранить состояние), но мы все ещё можем достичь изначальной цели
Вот это если что компилируется и работает:
using System;
interface IFoo
{
protected class TraitState
{
public int Bar {get;set;}
public int Bar2 {get;set;}
}
protected TraitState State {get;}
public int Wat() => State.Bar + State.Bar2;
}
public class C : IFoo
{
IFoo.TraitState IFoo.State {get;} = new IFoo.TraitState();
}
Свойство State при этом недоступно потребителям интерфейса, а доступно только реализующим его классам.
+2
Я нахожу такую имплементацию более чистой и удобной для чтения (и поддержки).
А для тестирования юнит-тестами?
+1
Sign up to leave a comment.
Для чего пригодится дефолтная реализация интерфейсов?