Почему конструктор универсального класса с параметром перечисления по умолчанию -не может вызывать защищенные методы этого класса?

Простой тестовый пример:

using System;

public class Test<T>
{
    public enum TestEnum
    {
        A,
        B
    }
    public Test (TestEnum a = TestEnum.A)
    {
        DoSomething ();
    }

    protected void DoSomething()
    {
    }
}

Компилятор (использует Mono в проекте Unity3D, цель.NET4.0 )выдает ошибку при вызове в Test()to DoSomething(). Если я удалю параметр по умолчанию для TestEnum a, он будет работать нормально. MonoDevelop хочет вызвать параметр по умолчанию TestEnum<>.A, но это не компилируется, как и TestEnum<T>.A(. очевидно, я не ожидал, что это сработает, но с помощью автозаполнения MonoDevelop я получил вот что ).

РЕДАКТИРОВАТЬ :конкретная ошибка:the name DoSomething doesn't exists in the current context

7
задан user1604356 16 August 2012 в 21:21
поделиться