如何将有区别的并集从C传递到F函数(F#-C#互操作)

如何将有区别的并集从C传递到F函数(F#-C#互操作),c#,.net,f#,interop,C#,.net,F#,Interop,模型的定义: type ItemEvent = | ItemCreated of ItemCreated and ItemCreated = { timestamp:DateTime; id:ItemId; name:string; description:string option } interface IEvent 下面是我要调用的方法的接口: type IItemWriteAccess = abstract Update: ItemEvent -> Result<u

模型的定义:

type ItemEvent =
| ItemCreated of ItemCreated
and ItemCreated = { timestamp:DateTime; id:ItemId; name:string; description:string option } interface IEvent
下面是我要调用的方法的接口:

type IItemWriteAccess =
    abstract Update: ItemEvent -> Result<unit, DomainMessage>
这将产生以下错误消息:

Argument 1: cannot convert from 'DomainModels.ItemCreated' to 'DomainModels.ItemEvent'
向上转换到
ItemEvent
也不起作用


如何解决此问题?

由于
Update
接受
ItemEvent
,因此无法将
ItemCreated
实例作为参数传递

我必须创建一个
ItemEvent
并将
ItemCreated
实例传递给构造函数,如下所示:

var @event = ItemEvent.NewItemCreated(msg);
然后我可以将其传递到
更新

public void Handle(ItemCreated msg)
{
    if(msg == null) throw new ArgumentNullException("msg");

    var @event = ItemEvent.NewItemCreated(msg);
    _repository.Update(@event);
}

您可能想在c中使用
ItemEvent msg
,是的,可能是这样
ItemEvent.NewItemCreated(NewItemCreated(…)
-我会试试。它的工作原理如下:
\u repository.Update(ItemEvent.NewItemCreated(msg))什么是DU?另外,如果你找到了自己问题的答案,记得你也可以在一段时间后发布passed@knocte谢谢你指出这一点。我会的。
public void Handle(ItemCreated msg)
{
    if(msg == null) throw new ArgumentNullException("msg");

    var @event = ItemEvent.NewItemCreated(msg);
    _repository.Update(@event);
}