Hello, to use descriptor you can use WRobto API like:
uint address = wManager.Wow.ObjectManager.ObjectManager.Me.GetDescriptorAddress(wManager.Wow.Patchables.Descriptors.PlayerFields.NextLevelXP);
int result = wManager.Wow.Memory.WowMemory.Memory.ReadInt32(address);
If you don't want to use focus, you can try to use "mouseover":
WoWUnit target; // ... your target
uint s_MouseOver = 0x00BD0798; // 3.3.5 http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/298310-3-3-5-offsets.html#post1902575
wManager.Wow.Memory.WowMemory.Memory.WriteUInt64(s_MouseOver, target.Guid);
SpellManager.CastSpellByNameOn("Spell Name", "mouseover");