1

我有 LINQtoSQL 生成的部分类用户,如下所示:

    [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[User]")]
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{

    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
 ...

然后我在我的项目中创建了单独的文件夹“代理”,并在那里放置了额外的用户类:

namespace LINQtoSQL_sample.Proxy
{
    public partial class User
    {
        public static string GetActivationUrl()
        {
            return Guid.NewGuid().ToString("N");
         ...

当我尝试从同一项目的另一部分调用该额外的静态方法时,就会出现问题。假设我有另一个文件夹“SqlRepositoryImpl”和另一个部分类:

namespace LINQtoSQL_sample.SqlRepositoryImpl
{
    public partial class SqlRepository
    {
        public bool CreateUser(User instance)
        {
            if (instance.ID == 0)
            {
                instance.added_date = DateTime.Now;
                instance.activated_link = LINQtoSQL_sample.Proxy.User.GetActivationUrl();
              ...

如您所见,我明确定义了要调用的 User 类的哪一部分,因为 IntelliSense 没有建议我使用额外的方法。

请告知为什么会发生这种情况以及我错在哪里?

4

1 回答 1

2

如您所见,我明确定义了要调用的 User 类的哪一部分,因为 IntelliSense 没有建议我使用额外的方法。

当你从一个类中调用一个方法时,类的“部分”就不再存在了。

如果您需要(并且可以)指定类的完整名称空间以从中调用方法,这意味着您实际上在两个不同的名称空间中有两个不同的类。如果这两个partial声明位于不同的命名空间中,那么您实际上声明了两个单独的类,而不是来自两个部分的单个类。

于 2013-09-09T00:12:53.300 回答