I found a solution. EDIT - even though someone had already posted it
Contrary to the info in a guide that support sent me “Epicor ERP C# Programming Guide (conversion from ABL ) 10.1”
Point 3 should have worked. But gives me my original error.
Point 4, which says is for Method Directives, does work. I ended up using
ttOrderHedRow.UDField<System.Decimal>("BidMargin_c")
Note I did have to include ‘Row’ in the tt table name.
Updated to give credit to @dhewi for posting the solution - even though I was too stupid to realize it.