2009-11-21 1 views
0

Есть ли способ предотвратить исключение o.GetType() при вызове исключения при вызове объекта, тип которого является внутренним и находится в другой сборке?Предотвращение GetType из исключения исключений для внутренних типов

Я обматываю API на основе COM внутри сборки .Net, чтобы можно было использовать более встроенную интеграцию .Net (интерфейсы коллекции, потоки, исключения и т. Д.). Коллекции оригинала УПА была завернуты следующим образом:

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> и сохранить первоначальный вид, как внутренние, так что они не загромождали пространства имен. Проблема здесь в том, что вызов GetType() на одном из возвращаемых объектов IList<T> приводит к исключению, поскольку базовый тип является внутренним.

Есть ли способы предотвратить это исключение?

Есть ли способ заставить GetType возвращать typeof(IList<T>)? Не уверен, что это лучше, хотя, поскольку оно отличается от стандартного поведения.

Я понимаю, что одна альтернатива уменьшению помех будет разделять коллекции на другое пространство имен. К сожалению, некоторые коллекции содержат дополнительные методы и раскрываются как общедоступные типы. Это означало бы, что коллекции делятся на два разных пространства имен (главное и внутреннее), или же все они стоят за «внутренним», и когда людям нужны эти специализированные коллекции, они будут импортировать пространства имен и эти простые коллекции беспорядок IntelliSense снова.

ответ

3

GetType должен нормально работать на внутренних типах от других сборок. Какое исключение вы видите?

Вы уверены, что это вызов GetType, который бросает исключение, а не некоторое последующее использование этого типа? Если бы вы могли дать короткую, но полную программу, демонстрирующую проблему, это очень помогло бы.

+0

D'oh. Глупый я не могу прочитать отчеты об испытаниях Visual Studio. Исключение исходит из внутренних свойств XmlSerializer, что имеет смысл. –