형식이 내부이고 다른 어셈블리에있는 개체에 o.GetType()
이 호출되면 예외가 throw되는 것을 방지하는 방법이 있습니까?GetType이 내부 형식에 예외를 throw하지 못하도록 방지
더 많은 기본 .Net 통합 (수집 인터페이스, 스트림, 예외 등)을 활용할 수 있도록 .Net 어셈블리 내에 COM 기반 API를 래핑합니다. 컬렉션은 원래 API는 다음과 같은 방법으로 포장되어있다 : 이러한 컬렉션의 여러 가지가 있기 때문에
internal class ComItems : IList<ComItem>
{
internal ComItems(ComApi.ComItems unmanaged) { this.unmanaged = unmanaged; }
public void Add(ComItem item) {
this.unmanaged.Add(-1, item.ToUnmanaged());
}
// Rest of the IList implementation
}
내가 IList<T>
의 인스턴스로 노출 그들이 혼란을하지 않도록 내부로 원래의 형태를 유지하고자하는 네임 스페이스. 여기서 문제는 기본 유형이 내부 유형이기 때문에 반환 된 IList<T>
객체 중 하나에서 GetType()
을 호출하면 예외가 발생한다는 것입니다.
이 예외를 방지하는 방법이 있습니까?
GetType이 typeof(IList<T>)
을 대신 반환하도록하는 방법이 있습니까? 표준 동작과 다르므로이 방법이 더 좋은지 확실하지 않습니다.
혼란을 줄이기위한 대안으로 컬렉션을 다른 네임 스페이스로 분리하는 방법을 알고 있습니다. 불행하게도 컬렉션 중 일부는에 추가 메서드가 포함되어 있으며 공용 유형으로 공개됩니다. 이것은 콜렉션이 두 개의 서로 다른 네임 스페이스 (메인과 내부)로 나뉘어져 있거나 내부의 모든 것이고, 사람들이 그 특별한 콜렉션을 필요로 할 때 그 네임 스페이스와 그 간단한 콜렉션을 임포트 할 것임을 의미합니다 IntelliSense 다시.
D' oh. 바보 같은 Visual Studio 테스트 보고서를 읽을 수 없습니다. 예외는 XmlSerializer의 내장에서 유래합니다. –