Когда я создаю SPFields, конструктор утверждает, что вы должны передать коллекцию полей.
Может кто-нибудь объяснить мне, почему?
Конструктор хочет некоторую контекстную информацию о том, к какой коллекции полей он будет добавлен.Вы не должны создавать новые поля таким образом.Вместо этого используйте SPFieldCollection.Add() - который создаст объект и добавит его в соответствующую коллекцию.
SPFieldCollection.Add()