See the question and my original answer on StackOverflow

It depends on the COM client. If it's jscript for example, you won't be able to use arrays anyway. In this case you'll have to provide all collection methods yourself like GetItem(index), etc.

If the client is VB for example, you should be able to use the old ArrayList instead of an array, or implement a custom collection class.

You can't prevent .NET clients from calling your public methods, but you can use the EditorBrowsableAttribute, like this:

[EditorBrowsable(EditorBrowsableState.Never)]
public int[] getDataCom()

In this case, the property will be hidden from auto-completion (unless used from the same assembly). It's better than nothing.