Как правильно вызвать реализацию интерфейса по умолчанию?

"переопределение" интерфейса по умолчанию impl из AcceptChanges не вызывает интерфейс по умолчанию impl после преобразования его в тип интерфейса, содержащий реализацию интерфейса по умолчанию. Зачем?

public interface IItemViewModel1
{
    void AcceptChanges() => Debug.Print("In interface");
}

public class ItemViewModelBase1<TModel> : IItemViewModel1
    where TModel : new()
{
    private TModel _data;

    public void AcceptChanges()
    {
        Debug.Print("In ViewModel");
        _data ??= new TModel();
        ((IItemViewModel1)this).AcceptChanges(); // calling itself rather than default interface implementation
    }
}

public static class TestClass
{
    public static void Test()
    {
        IItemViewModel1 x = new ItemViewModelBase1<int>();

        x.AcceptChanges();
    }
}

0 ответов

Другие вопросы по тегам