有没有什么办法可以防止o.GetType()
在类型为内部并驻留在另一个程序集中的对象上调用时引发异常?防止GetType在内部类型上抛出异常
我在一个.Net程序集中封装了一个基于COM的API,以便可以从更多的本地.Net集成(集合接口,流,异常等)中受益。藏品原来的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的内部,这是有道理的。 – 2009-11-21 20:02:58