1

我已经能够找到很多关于在 WPF 中使用 ASP .NET Membership 提供程序的东西。我什至让 ASP .NET Role 提供程序在我的 WPF 应用程序中工作。这些在 WPF 中非常容易使用。我找不到任何关于如何在 WPF 应用程序中使用 ASP .NET PROFILE 提供程序的信息。

我的应用程序将在移动车辆中的笔记本电脑上运行;它不能使用 Web 服务连接到服务器并对用户进行身份验证。我的代码需要能够从本地数据库中检索用户的个人资料信息。

我曾多次尝试构建一个派生自 ProfileBase 的类,但我尝试过的任何方法都没有奏效。详细地说,下面的代码是我最近失败的尝试的摘录:

public class UserProfile : ProfileBase {

    [CustomProviderData( "AlarmsToDisplay;int" )]
    public int AlarmsToDisplay {
        get { return (int) GetPropertyValue( "AlarmsToDisplay" ); }
        set { SetPropertyValue( "AlarmsToDisplay", value ); }
    }

    // Other properties following the same pattern follow.

    private UserProfile() { }

    public static UserProfile GetUserProfile( string username ) {
        return Create( username ) as UserProfile;
    }

    public static UserProfile GetUserProfile( string username, bool isAuthenticated ) {
        return Create( username, isAuthenticated ) as UserProfile;
    }
}

在此代码中,GetUserProfile(string username, bool isAuthenticated) 方法返回 null。我相信这是因为编译器无法将 ProfileBase 转换为 UserProfile,即使 UserProfile 来自 ProfileBase。如果我错了,请纠正我。

有人可以指出我现有的文章或描述构建从 ProfileBase 扩展的用户配置文件类的正确方法吗?

4

1 回答 1

1

我已经设法自己解决了这个问题。这是有效的:

  1. 从所有 CLR 属性中删除属性。这些不适用于默认的 aspnet_Profiles 表。
  2. 在 app.Config 中,您需要为标签添加一个“继承”属性。这必须设置为您的类的完全限定名称,用逗号与程序集文件名(无扩展名)分隔。

完成这些操作后,GetUserProfile 方法和 ProfileBase 类的 Create 方法将返回 UserProfile 对象。

于 2011-11-10T00:13:49.607 回答