Accessor中Generic的元素是internal/private的会导致转换失败的异常

internal SuspenseItemManager 中有private Queue<SuspenseItem> suspenseList = new Queue<SuspenseItem>();

SuspenseItem是internal的

以下代码会抛异常: SuspenseItem无法转成SuspenseItem_Accessor。 

因为SuspenseItemManager_Accessor中有Generic的SuspenseItem,而且是internal的,所以不能转换。

 

SuspenseItemManager_Accessor target = new SuspenseItemManager_Accessor();

SuspenseItem_Accessor obj = new SuspenseItem_Accessor();

target.suspenseList.Enqueue(obj);

 

 

解决方案:

SuspenseItemManager_Accessor target = new SuspenseItemManager_Accessor();

PrivateObject obj = new PrivateObject(target.Target);
Queue<SuspenseItem> queue = obj.GetField("suspenseList") as Queue<SuspenseItem>;

queue.Enqueue(new SuspenseItem());
posted @ 2012-10-10 15:48  霄霄  阅读(188)  评论(0编辑  收藏  举报