An enum nested inside an interface in a COM interface? I've never seen that done in COM and don't even know if it is valid. In COM everything needs to have a GUID and be COM visible. You need to annotate your interface, enum and any other COM-related stuff with ComVisible.
In regards to your code, that doesn't even look valid. MyClass1Enum is being used as a data member here but it is a type. In order to be valid MyClass1Enum would need to be a property of the IClass1 interface. What you posted as the original COM interface looks more like an IDL. So to get your sample code to compile it would need to look something like this.
public interface IClass1
{
MyClass1Enum MyClass1Enum { get; set; }
}
public enum MyClass1Enum
{
}
public interface IClass2
{
IClass1 C1 {get;set;}
}
Note also that the COM server side needs to implement these same rules. Additionally since C1 is settable then the COM server needs to either ensure the property is set or the calling code needs to set it.