Book of Red Gate 2010 - Red Gate Software
Book of Red Gate 2010 - Red Gate Software
Book of Red Gate 2010 - Red Gate Software
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Type type = Type.GetType(c_TheType, true);<br />
object typeAndNodeRegistrationHelper =<br />
source.GetService(type);<br />
IList typeBuilders = ReflectionUtils.GetFieldValue<br />
(typeAndNodeRegistrationHelper,<br />
“childTypes”);<br />
if (typeBuilders != null)<br />
{<br />
LockingUtils.TryLock(typeBuilders, delegate<br />
{<br />
Set seenBuilders =<br />
new Set();<br />
for (int i=typeBuilders.Count-1; i>=0; --i)<br />
{<br />
object typeBuilder = typeBuilders[i];<br />
bool seen = false;<br />
ReflectionUtils.UpdateFieldValue<br />
(typeBuilder,<br />
“builder”, oldBuilder =><br />
{<br />
IQueryProvider proxiedBuilder =<br />
m_ObjectExplorer.GetQueryProviderProxy(<br />
oldBuilder);<br />
seen = ! seenBuilders.AddIfNotExists(<br />
proxiedBuilder);<br />
return proxiedBuilder;<br />
});<br />
if (seen)<br />
{<br />
typeBuilders.RemoveAt(i); //SOC-130<br />
}<br />
}<br />
});<br />
}<br />
Runners Up:<br />
David Connell, Simon Cooper, Andrew<br />
Hunter, Konstantin Vorozcovs<br />
(All code submissions available in the<br />
Appendix <strong>of</strong> the ebook version)<br />
18