Yes, fields are attached to parts, so if you have access to a part, you can access its fields. Each part has a Fields collection, so using a litlle LINQ you could do something like: contentItem.As<MyPart>().Fields.Where(field => field.PartFieldDefinition.Name
== "MyField").Single() as TextField.
However, there's a "cleaner" way of doing it by casting your contentItem or contentPart to dynamic:
var field = ((dynamic)contentItem).MyPart.MyField;
field.Value = "Some value";
This also works great when you don't have a class defined for your part. For example, if you created a custom part called "MyCustomPart" using the admin, you can't go like contentItem.As<MyCustomPart> unless there's a class like that. So use dynamic
var myPart = ((dynamic)contentItem.MyCustomPart;