小编Aen*_*dhe的帖子

如何在c#中将null数组反序列化为null?

这是我的班级:

public class Command
{
   [XmlArray(IsNullable = true)]
   public List<Parameter> To { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我序列化这个类的对象时:

var s = new XmlSerializer(typeof(Command));
s.Serialize(Console.Out, new Command());
Run Code Online (Sandbox Code Playgroud)

它按预期打印(省略xml标头和默认MS名称空间):

<Command><To xsi:nil="true" /></Command>
Run Code Online (Sandbox Code Playgroud)

当我拿这个xml并试图反序列化它时我被卡住了,因为它总是打印"Not null":

var t = s.Deserialize(...);
if (t.To == null)
    Console.WriteLine("Null");
else
    Console.WriteLine("Not null");
Run Code Online (Sandbox Code Playgroud)

如果强制反序列化器使我的列表为null,如果它在xml中为null?

c# xml arrays serialization nullable

11
推荐指数
2
解决办法
2512
查看次数


为什么WebApi将空字符串标记为模型状态中的错误?

我有Web API的奇怪行为,.Net 4.5.2.如果可选字符串参数为null,则ModelState没有错误.如果它不为空且不为空,则不会再出现错误.但如果它只是一个空字符串我有模型状态错误.

为什么我得到它以及如何禁用它?

假设应用程序服务localhost:82我有这些结果:

Url: http://localhost:82/
Response: "null"

Url: http://localhost:82/?q=1
Response: "1"

Url: http://localhost:82/?q=
Response: {
  "Message": "The request is invalid.",
  "ModelState": {
    "q.String": [
      "A value is required but was not present in the request."
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

测试控制器和配置如下.在VS2013中,这被简化为"WebApi"的默认"Asp.net Web应用程序".

namespace Web.Api.Test.Controllers
{
    using System.Web.Http;

    [Route]
    public class HomeController : ApiController
    {
        [Route]
        [HttpGet]
        public IHttpActionResult Search(string q = default(string))
        {
            return this.ModelState.IsValid
                ? this.Ok(q ?? "null")
                : (IHttpActionResult)this.BadRequest(this.ModelState);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Startup.cs是:

using Microsoft.Owin;

using …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

7
推荐指数
2
解决办法
4914
查看次数

如何部署visual studio自定义工具?

我有自己的Visual Studio 2008 SP1自定义工具.它由5个程序集组成:3个程序集,其中包含在我的其他项目中大量使用的代码,1个VS2008 SDK上的程序集包装程序以及使用该工具的程序集.

如果我从visual studio调试我的工具,使用命令行"C:\ Program Files(x86)\ Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"和参数"/ ranu /"使用"运行外部程序"选项rootsuff Exp"一切都很完美.

在那之后,我正在尝试将它部署到我的工作VS副本,而不是实验配置单元,执行:gacutil /i Asm1.dll对于我的所有程序集,RegAsm Asm1.dll仅用于使用自定义工具进行装配.utils都没有打印任何错误,所有工作都按计划进行,甚至出现了注册表项.但是我的工具不起作用(发生错误"在此系统上找不到自定义工具'TransportGeneratorTool'")即使在PC重启后也是如此.我做错了什么?

Wrapper看起来像那样:

[ComVisible(true)]
public abstract class CustomToolBase : IVsSingleFileGenerator, IObjectWithSite
{
    #region IVsSingleFileGenerator Members
    int IVsSingleFileGenerator.DefaultExtension(out string pbstrDefaultExtension)
    {
        pbstrDefaultExtension = ".cs";
        return 0;
    }

    int IVsSingleFileGenerator.Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContents, out uint pcbOutput, IVsGeneratorProgress pGenerateProgress)
    {
        GenerationEventArgs gea = new GenerationEventArgs(
            bstrInputFileContents,
            wszInputFilePath,
            wszDefaultNamespace,
            new ServiceProvider(Site as Microsoft.VisualStudio.OLE.Interop.IServiceProvider)
                .GetService(typeof(ProjectItem)) as ProjectItem,
            new GenerationProgressFacade(pGenerateProgress) …
Run Code Online (Sandbox Code Playgroud)

c# deployment visual-studio-2008-sp1 customtool

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