다른 어셈블리에서 내부 추상 메서드 재정의

현재 다른 .net 라이브러리를 사용하는 C # 프로젝트에서 작업 중입니다. 이 라이브러리는 (무엇보다도) 시퀀스를 트리로 구문 분석합니다. 모든 항목은 추상 클래스 Sequence 에서 상속되는 일부 유형입니다. 동작을 약간 변경하고 Sequence 를 직접 하위 클래스 화해야했습니다 ( MySequence 라고 부릅니다). 트리가 생성 된 후 일부 트리 노드를 내 클래스의 객체로 교체 할 수있었습니다.

이제 새 버전의 라이브러리가 게시되고 다음 서명을 가진 Copy 함수가 도입되었습니다.

internal abstract Sequence Copy();

내 코드를 새 버전으로 채택하고 재정의하려고했지만 무엇을하든 두 가지 오류가 발생합니다.

MySequence 는 상속 된 추상 멤버 ' Sequence.Copy ( ) '
and :
MySequence.Copy () ': 재정의 할 수있는 적절한 메서드가 없습니다.

추상적 (-> 덮어 써야 함)이고 내부 (-> 불가능하므로 어셈블리 외부의 숨겨진 가시성으로 인해 덮어 쓰기)

문제는 왜 이런 일이 발생하는지 이해하지만 어떻게해야할지 모르겠다는 것입니다. 내 프로젝트에서 Sequence 를 하위 클래스로 만드는 것이 중요합니다.

그리고 내가 이해하지 못하는 것은 왜 내부 추상 modfier가 기본적으로 어셈블리 외부에서 전체 클래스의 하위 클래스를 허용하기 때문에 처음부터 허용된다는 것입니다!?

이 문제를 해결하는 방법? 리플렉션 등을 통해?

미리 감사합니다!

8
задан Abel 4 September 2017 в 23:48
поделиться