Calculating the surrounding objects in a two-dimensional coordinate system leaving out the corners
This code is extremely hard to read and much longer than it needs to be.
Use documented naming conventions for C#.
Make small methods that do one thing well.




public bool IsWall(int x, int y)
{
  return this.MyWorld.GetObjectOnPosition(x, y) is Wall;
}
public bool IsValidForEditing()
{
  int x = this.X;
  int y = this.Y;
  return 
    !IsWall(x-1, y) || !IsWall(x, y-1) || 
    !IsWall(x+1, y) || !IsWall(x, y+1);
}




Anyone who knows even basic C# -- or any C-like language -- can read this code and immediately understand what it means. Your original code, not so much.

Any time you write a loop, ask yourself "would this be more clear without the loop?"  Odds are good, yes. In this case, definitely.