Nemerle explicit interface
От: _nn_ www.nemerleweb.com
Дата: 22.03.10 13:03
Оценка:
C#
class A<T> : IEnumerable, IEnumerable<T>
{
    IEnumerator<T> IEnumerable<T>.GetEnumerator()
    {
        return null;
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return null;
    }
}


Nemerle
class A[T] : IEnumerable, IEnumerable[T]
{
    public GetEnumerator() : IEnumerator[T]
      implements IEnumerable[T].GetEnumerator
    {
        null;
    }

    public GetEnumerator() : IEnumerator
      implements IEnumerable.GetEnumerator
    {
        null;
    }
}


Error: attempted return type overload on method A.GetEnumerator() : System.Collections.IEnumerator and method A.GetEnumerator() : System.Collections.Generic.IEnumerator[T]
Error: type name 'IEnumerable' is ambiguous, it could be:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll(0,0):Warning: hint: first possible type: 'System.Collections.Generic.IEnumerable.[T]'
C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll(0,0):Warning: hint: second possible type: 'System.Collections.IEnumerable'


Вторая попытка
class A[T] : System.Collections.IEnumerable,
             System.Collections.Generic.IEnumerable[T]
{
    public GetEnumerator() : System.Collections.Generic.IEnumerator[T]
      implements System.Collections.Generic.IEnumerable[T].GetEnumerator
    {
        null;
    }

    public GetEnumerator() : System.Collections.IEnumerator
      implements System.Collections.IEnumerable.GetEnumerator
    {
        null;
    }
}



Error: attempted return type overload on method A.GetEnumerator() : System.Collections.IEnumerator and method A.GetEnumerator() : System.Collections.Generic.IEnumerator[T]


Если оставить только IEnumerable или IEnumerable[T] то работает.
Как заставить работать ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.