efl_part suggest the existence of another namespace inside the object namespace, but implementation doesn't seems to reflect that. Proposed syntax in C#:
((Efl.File)obj["bg"]).file = "label";
obj.bg().file = "label";
Assuming that file is both a @constructor property and a part of bg. Clearly this is not always trivial to make it work. Alternative proposal for the syntax looks like :
obj.parts.bg.file = "toto";
obj.parts.bg.parts.file.text = "toto";
This is all hypothetic, but we will have conflict between property and part, it will be best to plan properly for it.