优雅的 Asp.Net MVC 3 自定义成员资格包装类,具有扩展(自定义)方法和属性

发布于 2024-11-06 21:16:29 字数 833 浏览 4 评论 0原文

我正在尝试编写一个自定义会员资格类别。继承 Membership 类并为所有包含的必需项目(验证用户、创建用户、删除用户、已批准等)提供功能似乎可以正常工作。

然而,当我尝试添加属性或方法时,我遇到了问题。

由于所有其他属性和方法都是密封类中的公共重写类, 附加属性不会显示。

举例来说(仅作为示例,而不是“真实”代码):

public sealed class Membership : MembershipProvider
{
    public override string ApplicationName
    {
        get
        {
            return "myApp";
        }
    }
    public string myValue { get;set;}
}

现在,我明白为什么当我尝试执行 Membership.myValue 时 myValue 不会显示,但 Membership.ApplicationName 会显示。

我的问题是,如何扩展会员资格以显示自定义项目?我是否完全放弃 Membership.xxx 并编写一个包装类?如果是这样,怎么办?我可以找到世界上所有有关如何创建自定义会员级别的文档。我有一个工作自定义会员资格,如果我仅使用所有可用选项,它就可以正常工作。我有一个自定义角色提供程序和一个自定义配置部分来存储所有内容,它是最好的朋友。

我没有一个优雅的解决方案。

我希望最终结果是我使用一个引用(例如 Membership.xxx 或 myClass.xxxx)来引用所有会员项目 + 自定义项目。

请提供如何实施的示例或链接到将解决自定义方法项目的适当项目。

I am attempting to write a custom membership class. It seems to work ok inhering the Membership class and providing functions for all the included required items (validate user, create user, delete user, isapproved, etc).

However, where I run into a problem is when I try to add properties or methods.

As all the other properties and methods are public override classes in a sealed class,
the additional properties do not show up.

Say for example (example only, not "real" code):

public sealed class Membership : MembershipProvider
{
    public override string ApplicationName
    {
        get
        {
            return "myApp";
        }
    }
    public string myValue { get;set;}
}

Now, I understand why myValue will not show up when I try to do Membership.myValue but Membership.ApplicationName will.

My question is, how to extend membership to show the custom items? Do I ditch Membership.xxx entirely and write a wrapper class? If so, how? I can find all the documentation in the world on how to create a custom membership class. I've got a working custom membership that works fine if I use all the available options only. I've got a custom roles provider and a custom config section to store everything and it's best friend.

What I don't have is an elegant solution.

I'd like the end result to be that I use one reference (such as Membership.xxx or myClass.xxxx) to reference all membership items + custom items.

Please provide examples of how to implement or links to appropriate items that will resolve the custom methods item.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半世晨晓 2024-11-13 21:16:29

任何时候您引用成员资格实例时,您只需将其转换为您的类类型,仅此而已。

Any time you reference the membership instance you will just have to cast it to your class type, that's all.

情独悲 2024-11-13 21:16:29

如果您不这样做,可以查看扩展方法想要来回转换你的实例

You can take a look at Extension Methods if you don't want to cast back and forth your instances

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文