Shouldn't a database NamedDictionary's direct children be DBDictionaries? That is, each DBDictionaryEntry of database NamedDictionary is key-indexed ObjectId of an DBDictionary. So, in your case, the DBDictionaryEntry "AcadDim_CRX" should be a DBDictionary, not a XRecord (well, it could be XRecord behind the scene, but at least in .NET API, DBDictionary is not derived from XRecord publicly). While one may be directly add custom entry into Database's NamedDictionary as XRecord, it is bad practice. the direct child of Database.NamedDictionary should always be another DBDictionary (with key-indexed, thus NamedDictionary).
Thus, you case should be like:
...
if (node.Contains("AcadDim_CRX")
{
var theDic=(DBDictionary)tr.GetObject(not.GetAt("AcadDim_CRX",OpenMode.ForRead);
//Then you dig into each DBDictionaryEntry in this named dictionary, it could be XRecord, or another DbDictionary ...
}