C # в F # Конвертировать открытый частичный класс Device: MarshalByRefObject - PullRequest
5 голосов
/ 07 декабря 2010
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;
    }

до сих пор не знаю, как преобразовать это "частичное" и "внутреннее" в F #

спасибо

Ответы [ 2 ]

9 голосов
/ 07 декабря 2010

Как говорит Леппи, прямой поддержки 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))
5 голосов
/ 07 декабря 2010

partial - это функция компилятора C #, она не будет работать на F #, вам придется объединить все частичные классы или наследовать от существующего.

...