I have some auto-instantiation code which I would like to apply to about 15 properties in a fairly big class. The code is similar to the following but the type is differ
You can use the ?? operator to simplify the code into one line:
protected ComplexType _propertyName;
public ComplexType PropertyName
{
  get
  {
    return _propertyName ?? (_propertyName = new ComplexType());
  }
}
As a side note I would probably avoid protected fields. If you need to set the property from a derived class I would rather create a protected setter.