Custom interface and struct question

I’ve got a custom interface and a couple custom structs created in c++ that I’d like for Blueprints to be able to take advantage of, unfortunately the answer to how to do that is eluding me. Here is an example workaround I’m using for an interface:

 void DeregisterGridElement(IGridElement* GridElement);

void BlueprintDeregisterGridElement(UObject* Object) {DeregisterGridElement(Cast<IGridElement>(Object));}

If I include the UFUNCTION(BlueprintCallable) on the first function, I get: [FONT=Courier New]cannot convert argument 1 from ‘TScriptInterface<IGridElement>’ to ‘IGridElement *’

So, I’ve worked around it by just taking a UObject and casting, which is not ideal but it’s ok for now I guess, however for my custom structs which have the same problem I do not know of a workaround (except to make a method take every element in the struct and create a new one – god help me for functions that take an array of them) as they cannot be stored as UObjects. I’ve googled quite a bit and tried every combination of “[FONT=Courier New]UINTERFACE(MinimalAPI, meta = (CannotImplementInterfaceInBlueprint))” and[FONT=Courier New] USTRUCT(…) I can find, none of it seems to change this behavior.

Could anybody point me to what I’m missing? Thanks in advance!