Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#->;访问x。出租_F# - Fatal编程技术网

F#->;访问x。出租

F#->;访问x。出租,f#,F#,正如标题所说,那么我想访问x。从let而不是成员 以下工作: type UploadController() = inherit Controller() member x.UploadPath with get() = x.Server.MapPath "~/Uploads" 但这是: type UploadController() = inherit Controller() let uploadPath = x.Server.Map

正如标题所说,那么我想访问x。从let而不是成员

以下工作:

type UploadController() =
    inherit Controller()

    member x.UploadPath 
        with get() = x.Server.MapPath "~/Uploads" 
但这是:

type UploadController() =
    inherit Controller()

    let uploadPath = x.Server.MapPath "~/Uploads" 
引发编译器错误:

命名空间或模块“x”不可用 明确的


不可能完成的任务?

您可以定义如下参考:

type UploadController () as x =
    inherit Controller ()

    let uploadPath = x.Server.MapPath "~/Uploads" 

您可以定义如下所示的引用:

type UploadController () as x =
    inherit Controller ()

    let uploadPath = x.Server.MapPath "~/Uploads" 

ChaosPandion给出了一般性的答案,但在您的特定情况下,您可能不需要自我标识符。假设
Server
是在
Controller
或其一个基类中定义的,则可以使用
base.
而不是自标识符。以下章节对此进行了描述:

关键字
base
在派生类中可用,并引用基类实例。它与自标识符一样使用


ChaosPandion给出了一般性的答案,但在您的特定情况下,您可能不需要自我标识符。假设
Server
是在
Controller
或其一个基类中定义的,则可以使用
base.
而不是自标识符。以下章节对此进行了描述:

关键字
base
在派生类中可用,并引用基类实例。它与自标识符一样使用


为什么当我编译并运行它时,它会抛出一个异常:“System.NullReferenceException:对象引用未设置为对象的实例。”在声明
uploadPath
的行中?我相信这是因为MVC框架的工作方式。UploadController构造函数中正在调用let uploadPath代码,这意味着MVC框架没有时间将服务器变量分配给控制器。它看起来像这样:var controller=newuploadcontroller();(您的逻辑在此激发)controller.Server=SomeServerSettings;为什么当我编译并运行它时,它会抛出一个异常:“System.NullReferenceException:对象引用未设置为对象的实例。”在声明
uploadPath
的行中?我相信这是因为MVC框架的工作方式。UploadController构造函数中正在调用let uploadPath代码,这意味着MVC框架没有时间将服务器变量分配给控制器。它看起来像这样:var controller=newuploadcontroller();(您的逻辑在此激发)controller.Server=SomeServerSettings;这个问题最好的标题是“如何从类构造函数内部访问
This
?”这个问题最好的标题是“如何从类构造函数内部访问
This
?”