F#->;访问x。出租
正如标题所说,那么我想访问x。从let而不是成员 以下工作: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
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
?”