派生类型的构造函数中的F#set属性

时间:2016-06-17 17:46:27

标签: f#

我有一个继承自MVC类AuthorizeAttribute的类型。在我的构造函数(带参数)中,我想设置Roles属性但是我收到错误"这不是有效的对象构造表达式。显式对象构造函数必须调用备用构造函数或初始化对象的所有字段,并指定对超类构造函数的调用。"有人可以帮我解决我做错的事吗?

尝试#1:

type MyAuthorizer =
    inherit AuthorizeAttribute

    new([<ParamArray>] roles : string[]) =
        let x = new MyAuthorizer()
        //x.Roles <- ""
        x

尝试#2。 (同样的错误):

type MyAuthorizer =
    inherit AuthorizeAttribute

    new([<ParamArray>] roles : string[]) =
        {
            inherit AuthorizeAttribute
            Roles = ""
        }

2 个答案:

答案 0 :(得分:3)

尝试在对基础构造函数的调用中包含属性及其值,如下所示:

type MyAuthorizer([<ParamArray>] roles : string[])    
    inherit AuthorizeAttribute(Roles = "")

答案 1 :(得分:2)

语法有点令人困惑,但这应该有效。请注意take关键字,它允许您执行任意副作用,例如指定then的值。

Roles