In C#, no not currently with an auto-generated property (though VB.NET auto-properties can do this). This is something I have often wished for myself. So you could manually roll your own property, or use a constructor.
Either way you'll have some code you wish you didn't have to write to do this (manual property with no constructor vs. auto-property with constructor).
Interestingly, though, the IL is different between the two options. When you have a manual property with a backing field using an initializer, it will get executed before the base-class constructor in C#:
MyClass..ctor:
IL_0000: ldarg.0
IL_0001: newobj System.Collections.Generic.List<System.Object>..ctor
IL_0006: stfld UserQuery+MyClass._products
IL_000B: ldarg.0
IL_000C: call System.Object..ctor
IL_0011: nop
IL_0012: ret
While using an auto-property with initialization in the constructor will get executed after the base-class constructor in C#:
MyClass..ctor:
IL_0000: ldarg.0
IL_0001: call System.Object..ctor
IL_0006: nop
IL_0007: nop
IL_0008: ldarg.0
IL_0009: newobj System.Collections.Generic.List<System.Object>..ctor
IL_000E: call UserQuery+MyClass.set_Products
IL_0013: nop
IL_0014: nop
IL_0015: ret
I'm only saying this as a point of curiosity, as writing code that depends on initialization order in .NET can be risky (initialization order in fact differs a bit between VB.NET and C#)