C#转换为F#转换公共部分类Device:MarshalByRefObject

cnd*_*cnd 5 f# c#-to-f#

public partial class Device : MarshalByRefObject
{
    internal bool FindTagName(string name, OneTag tag)
    {
        foreach (FuncSect fs in listFuncSect)
        {
            foreach (OneTag ot in fs.listTags)
            {
                if (ot != tag && ot.Name == name) return true;
            }
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

仍然不知道如何将这个"部分"和"内部"转换为F#

谢谢

kvb*_*kvb 10

正如leppie所说,没有直接支持partial,尽管你可以通过内在类型扩展获得类似的效果.F#支持internal方法,因此您的示例如下所示:

// primary definition somewhere
type Device() =
  inherit MarshalByRefObject()
  ...


// type extension (roughly equivalent to partial class)
type Device with
  member internal this.FindTagName(name:string, tag:OneTag) =
    listFuncSect
    |> Seq.exists 
         (fun fs -> 
            fs.listTags 
            |> Seq.exists (fun ot -> ot <> tag && ot.name = name))
Run Code Online (Sandbox Code Playgroud)


lep*_*pie 5

partial 是一个C#编译器功能,它不适用于F#,你必须组合所有的部分类,或继承现有的部分类.