小编Oyv*_*ind的帖子

版本控制:svcmap,disco,xsd,wsdl,svcinfo和datasource文件

我们有一个名为的网络服务,比方说Foo.

所以有一个Foo.svc文件和Foo.svc.cs背后的代码.

我们添加了一个silverlight项目并希望使用Foo.svc服务,因此我们添加了一个服务引用并将其称为命名空间FooBar.

这将创建以下文件:

  • Reference.cs
  • Reference.svcmap
  • Foo.xsd
  • Foo.disco
  • configuration.svcinfo
  • Foo.wsdl
  • 还有各种*.datasource文件.

随着时间的推移,我们更新了Foo.svc并添加了更多Web服务(方法和接口),并且FooBar目录中的文件数量正在增长.

我在这个目录中有26个Foo(nn).xsd文件 - 其中nn = 1到26.

我的configuration.svcinfo是配置91.svcinfo.

我的问题是这个?这些文件中的任何一个都需要进行版本控制吗?每次执行build\deploy时都可以删除它们(只要您执行更新服务引用)吗?

version-control web-services service-reference

23
推荐指数
2
解决办法
9615
查看次数

使用XmlSerializer反序列化随机/未知类型

我正在使用XmlSerializer与服务进行通信.这不是常规的SOAP服务,它有自己的XML对象类型.例如,我可能会要求一个<Capabilities>对象,但它可能会返回一个<Exception>.换句话说,我必须处理随机的XML文档类型.但是,我知道我必须处理哪些类型.

我想要做的是找到一个通用的方法来序列化/反序列化这些文档.问题是XmlSerializer需要在创建阶段知道类型.

这些不是封装在公共根元素中,因此[XmlInclude]在这种情况下,创建基类并使用该属性不起作用:

[XmlInclude(typeof(Exception))]
[XmlInclude(typeof(Capabilities))]
public abstract class BaseClass
{
  public BaseClass()
  {
    SchemaLocation = "test";
  }

  [XmlAttribute("schemaLocation")]
  public String SchemaLocation { get; set; }
}

[XmlRoot("Exception")]
public class Exception : BaseClass
{
  public Exception():base()
  {
  }
  [XmlElement]
  public String Message { set; get; }
}

[XmlRoot("Capabilities")]
public class Capabilities : BaseClass
{
  public Capabilities() : base()
  {}
  [XmlElement]
  public String ServiceName { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的解决方案是使用XmlReader手动探测根元素,然后在创建XmlSerializer实例之前将其映射到正确的类型.

有没有更好的方法呢?

.net c# xml serialization xmlserializer

13
推荐指数
1
解决办法
1万
查看次数

.NET Core 中带参数的自定义 JsonConverter

我编写了自己的 JsonConverter(使用 ASP.Net Core 3.1),打算在我的 DTO 上使用它。

在之前的版本(Newtonsoft.Json)中,您可以在自定义 JsonConverter 类上添加构造函数,并使用 JsonConverterAttribute 指定参数:

[JsonConverter(typeof(MyDecimalConverter), 3)]
public decimal MyProp { get; set; }
Run Code Online (Sandbox Code Playgroud)

然而,迁移到 后System.Text.Json.Serialization,这个选项就不再存在了。新的 JsonConverterAttribute 根本没有其构造函数。

实现这一目标的新方法是什么?

.net json json.net asp.net-core

10
推荐指数
2
解决办法
2万
查看次数

XmlSerializer和工厂创建的元素

我正在尝试序列化/反序列化具有工厂创建的成员的对象.例如,假设有一个类型的成员Foo,它使用FooFactory.CreateFoo(int bar)进行实例化.

我目前的想法是

1.创建自定义XmlReader(例如,从XmlTextReader派生),并将工厂附加到它

2.Implement IXmlSerializable

3.在ReadXml()中,我可以从读者手中抢到工厂.

不确定这是否是最优雅的方式,是否有人做过类似的尝试?

.net c# xml-serialization factory-pattern xmlserializer

6
推荐指数
1
解决办法
1057
查看次数