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