无法从Web服务访问公共类

Izz*_*zzy 7 c# asp.net web-services

我有一个非常奇怪的场景,我似乎无法弄清楚发生了什么.我有一个用C#编写的Web服务,目标框架是3.5.我有很多类和方法但为了简单起见,我将在问题中只使用两个类.

public class PathNames
{
   private string _pathA = "Some Path";
   private string _pathB = "Another Path";
   public string BaseDirectoryPath
   {
        get
        {
            return Path.Combine(_pathA, _pathB); 
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

第二节如下:

public class UserInformation
{
   public string UserName { get; set; }
   ...//more properties 
}
Run Code Online (Sandbox Code Playgroud)

上述两个类都是相同的namespace.

Web服务在WebForm应用程序中引用,目标框架为4.0.一切似乎工作正常,我可以在看到UserInformation它时看到课程Object Browser.然而,这个PathNames班似乎并不可见Object Broswer.

有问题的两个源文件都设置CompileFile Propertieswindows中.我有5个类似于窗口中的UserInformation相同设置File Properties,它们只是简单的POCO,只有公共汽车.这些都似乎正在通过,我可以访问它们并在中看到它们Object Browser.由于一些奇怪的原因,我无法PathNames上课.我试图添加一些新的虚拟类,并与类具有相同的问题PathNames.有人可以告诉我,我做错了.

  1. Web服务旧ASMX

  2. 正在通过VS添加服务引用创建Web服务客户端

  3. 使用VS 2017专业版 - 15.6.7版.

  4. 发布后,如果我解压缩dll,那么PathNames类就在那里.所以它显然在dll中.

  5. 我看过这个,但仍然没有运气.

Nko*_*osi 2

基于示例的唯一区别是,一个属性是readonly可以修改的,而另一个属性可以修改。

为了使类可序列化,请考虑对属性进行分解

public class PathNames {
    private string _pathA = "Some Path";
    private string _pathB = "Another Path";

    public PathNames() {
        BaseDirectoryPath = Path.Combine(_pathA, _pathB);
    }

    public string BaseDirectoryPath { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用默认构造函数来设置属性的默认值

或者只是在房产上有一个空的二传手

public class PathNames {
    private string _pathA = "Some Path";
    private string _pathB = "Another Path";

    public string BaseDirectoryPath { 
        get {
            return Path.Combine(_pathA, _pathB);
        }
        set {
            //No OP
        }
    }
}
Run Code Online (Sandbox Code Playgroud)