Методы экземпляра зависят от состояния этого конкретного экземпляра для запуска.
Допустим, у вас был этот класс с описанным вами сценарием:
class Person
{
static PrintName()
{
// Not legal, but let's say it is for now.
Console.WriteLine(Name);
}
private Name { get; set; }
}
Надеюсь, проблема сейчас очевидна. Поскольку Name является экземпляром члена, вам нужен фактический экземпляр класса, так как Name может отличаться в разных экземплярах.
Из-за этого статический метод, который не привязан к экземпляру, не знает какой экземпляр использовать. Вы должны четко указать, какой именно.