小编sha*_*wty的帖子

将Newtonsoft.Json.Linq.JArray转换为特定对象类型的列表

我有以下类型的变量{Newtonsoft.Json.Linq.JArray}.

properties["Value"] {[
  {
    "Name": "Username",
    "Selected": true
  },
  {
    "Name": "Password",
    "Selected": true
  }

]}
Run Code Online (Sandbox Code Playgroud)

我想做到的是将其转换为List<SelectableEnumItem>那里SelectableEnumItem是以下类型:

public class SelectableEnumItem
    {
        public string Name { get; set; }
        public bool Selected { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我对编程很新,我不确定这是否可行.任何有关工作示例的帮助将不胜感激.

c# json.net

216
推荐指数
3
解决办法
20万
查看次数

在C#中使用GDAL时出现异常

我开始在我的应用程序中使用gdal_csharp dll并读取geotiff文件.但它说:

The type initializer for 'OSGeo.GDAL.GdalPINVOKE' threw an exception.
Run Code Online (Sandbox Code Playgroud)

这是我的代码

string fileName = @"/path to geotiff file";

OSGeo.GDAL.Dataset DS = 
    OSGeo.GDAL.Gdal.Open(fileName, OSGeo.GDAL.Access.GA_ReadOnly);
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

编辑:

我有这些dll

在此输入图像描述

这是完整的错误消息:

在此输入图像描述

它说不能加载gdal_wrap.但是,当我要将dll添加到我的应用程序时,会显示以下消息:

在此输入图像描述

c# exception gdal geotiff

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

如何确定umbraco中的当前页面文档类型?

我觉得有一个关于Umbraco的一个非常简单的问题,但是一个尚未明确答案的问题.

我有一个剃刀模板,标准的东西,@显示变量和一些内联C#代码.

在我使用的模板中的某一点:

@Umbraco.RenderMacro("myCustomMacro");
Run Code Online (Sandbox Code Playgroud)

没有问题,一切都按预期工作.

现在,这个宏被插入到每个页面上(它在主模板中),但我有一个页面属性,允许内容作者通过页面属性中的复选框打开和关闭它,到目前为止,所有好的一切都完美无缺.

但是我现在发现,对于某个"文档类型",必须显示该组件,所以我一直试图找到一种方法来执行该检查.

现在在我看来,这应该像做这样的事情一样简单:

@{
  if(CurrentPage.documentType == "someDocTypeAliasHere")
  {
     //Render the macro
  }
  else
  {
     // Render the macro only if the tick box is checked
  }
 }
Run Code Online (Sandbox Code Playgroud)

正如我所说,这是(或者我认为它应该是无论如何)一个非常简单的操作,但到目前为止似乎没有结果.

到目前为止我尝试了什么?

除了阅读我们umbraco上的每一页都提到与剃刀和@CurrentPage变量有关的内容之外,我已经通过剃须刀属性备忘单,并尝试了看似最常见的属性,包括(不具体)订购):

@CurrentPage.NodeTypeAlias
@CurrentPage.NodeType
@CurrentPage.ContentType
@CurrentPage.DocumentType
Run Code Online (Sandbox Code Playgroud)

和那些看起来像他们可能适合该法案的其他一些字母案例组合.

一致地,属性要么不存在要么是空的,所以在它们中没有可用的信息来帮助确定结果.

所以现在经过几天的圈子,并没有到达任何地方,我发现自己在这里..

(请注意:这不是搜索XSLT问题,也不是迭代子集合或类似的东西,因此任何发布XSLT,宏,页面模板或类似内容的请求都将被拒绝,我需要做的就是找到一个确定当前正在呈现的页面的文档类型的方法.)

干杯

美女

PS:忘了提,我正在使用

umbraco v 4.11.8(汇编版本:1.0.4869.17899)

以防万一有人问.

macros doctype umbraco razor

11
推荐指数
3
解决办法
3万
查看次数

当我有自定义基本 URL 时,如何使用 swagger 设置 Swashbuckle v5?

我正在将 .net API 升级到 .net Core 3.1 并使用 Swashbuckle.AspNetcore 5.4.1。API 在 ServiceFabric 应用程序中运行。我找到了这个https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1173并尝试遵循它并生成 swagger 但如果我尝试使用 Swagger UI 发送请求请求 URL 使用错误的 IP 所以请求失败。在旧的 Swashbuckle 4.0.1 设置中,我们没有指定主机,只指定相对 basePath。我怎样才能达到同样的目标?

启动文件

var swaggerBasePath = "/MySfApp/SfApp.ClientApi/";

app.UseSwagger(c =>
{
    c.SerializeAsV2 = serializeAsSwaggerV2;
    
    c.RouteTemplate = "swagger/{documentName}/swagger.json";
    c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
    {
        swaggerDoc.Servers = new List<OpenApiServer> { new OpenApiServer { Url = $"{httpReq.Scheme}://{httpReq.Host.Value}{swaggerBasePath}" } };
    });
});

app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("api/swagger.json", "My API V1");
});
Run Code Online (Sandbox Code Playgroud)

结果是 Swagger UI 在 URL 上正确加载:

http://145.12.23.1:54000/MySfApp/SfApp.ClientApi/swagger/index.html
Run Code Online (Sandbox Code Playgroud)

它在名称下说 BaseUrl 是:

[ …
Run Code Online (Sandbox Code Playgroud)

swagger .net-core-3.1 swashbuckle.aspnetcore

10
推荐指数
1
解决办法
3055
查看次数

在异常和返回值之间进行选择

我创建了一个从文件中解析一些文档的类.

class Parser
{
  public Parse(string fileName)
  {
    ///
  }
}
Run Code Online (Sandbox Code Playgroud)

有时可能会出现解析错误,解析器必须返回某些数据.我为此创建了特殊课程.

class ParsingError
{
 // some data
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确处理这些错误.我至少有两个选择:

创建我自己的异常或返回值.

方案一

myParser.Parse(fileName, out error);
Run Code Online (Sandbox Code Playgroud)

方案二

try
{
  myParser.Parse(fileName)
}

catch(MyParsingException ex)
{
  // use ex.Error field
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果我没有弄错,那么例外背后的意识形态就是它应该处理一些特殊的东西,这是该方法无意处理的一些情况.

这让我想知道是否例如:

解析器在文件中找到未知字段,或者编码错误

这会被视为特殊情况吗?

c# architecture exception-handling

9
推荐指数
2
解决办法
8608
查看次数

使用repeat.for在aurelia中绑定自定义元素的正确方法是什么

使用Aurelia我正在努力使用绑定和repeat.for:假设我在viewmodel中有一个属性menuItems(一个数组MenuItem)我想用自定义模板重复menuitems:

export class App {
    menuItems : MenuItem[];
}
export class MenuItem{
   label:string;
}
Run Code Online (Sandbox Code Playgroud)

在我的应用模板中,我使用自定义元素

<require from="./menu-item"></require>
<ul>
  <menu-item repeat.for="item of menuItems"></menu-item>
</ul>
Run Code Online (Sandbox Code Playgroud)

我的自定义模板(menu-item.html):

<template>
  <li>${label}</li>
</template>
Run Code Online (Sandbox Code Playgroud)

获取模板绑定或访问绑定的MenuItem的正确方法是什么?

我已经试过如下:${label}${item.label},但不起作用.我可以在bind(bindingContext)回调中看到bindingContext有一个属性'item':bindingContext.item这是被绑定的MenuItem.

我还尝试在MenuItem类上创建可绑定属性:

export class MenuItem{
   @bindable current any;
   label:string;
}
Run Code Online (Sandbox Code Playgroud)

和以下中继器:

<menu-item repeat.for="item of menuItems" current.bind="item"></menu-item>
Run Code Online (Sandbox Code Playgroud)

和相应的模板

<template>
  <li>${current.label}</li>
</template>
Run Code Online (Sandbox Code Playgroud)

注意:请参阅下面的编辑1,以获取我对代码中此点的评论.

这种方法也行不通.

其他探索包括不使用自定义元素(工作),使用<compose view-model='MenuItem', model.bind='item'/>,在这个例子中也不起作用,我想也会详细说明.

工作解决方案,另请参阅Aurelia repeat.for绑定自定义元素 :

重复并绑定模板和viewmodel类的自定义属性:

<menu-item repeat.for="item of menuItems" current.bind="item" containerless></menu-item>
Run Code Online (Sandbox Code Playgroud)

viewmodel类:

import {bindable, customElement} …
Run Code Online (Sandbox Code Playgroud)

javascript aurelia aurelia-binding

9
推荐指数
1
解决办法
1528
查看次数

在NancyFX自托管单例中调用关机任务

我正在尝试找到一种方法来调用一个任务,该任务需要在关闭在NancyFX自托管应用程序内的TinyIOC中创建的单个对象时调用.

到目前为止,我一直无法得出答案,而且我也愿意接受更好的实现我即将描述的场景的想法.

概观

我有一个基于PHP的Web应用程序,我正在研究,因为这是PHP,没有旋转的线程/服务器来监听和处理长时间运行的任务,php代码存在请求它的浏览器请求的生命周期.

有问题的应用程序需要向Web服务发出一些可能需要时间才能完成的请求,因此我想出了使用Topshelf,NancyFX和Stackexchange.Redis在C#中实现一些后端服务的想法. .

该服务是标准的NancyFX自主控制台应用程序,如下所示:

Program.cs中

using Topshelf;

namespace processor
{
  public class Program
  {
    static void Main()
    {
      HostFactory.Run(x =>
      {
        x.UseLinuxIfAvailable();
        x.Service<ServiceApp>(s =>
        {
          s.ConstructUsing(app => new ServiceApp());
          s.WhenStarted(sa => sa.Start());
          s.WhenStopped(sa => sa.Stop());
        });
      });
    }

  }
}
Run Code Online (Sandbox Code Playgroud)

ServiceApp.cs

using System;
using Nancy.Hosting.Self;

namespace processor
{
  class ServiceApp
  {
    private readonly NancyHost _server;

    public ServiceApp()
    {
      _server = new NancyHost(new Uri(Settings.NancyUrl));
    }

    public void Start()
    {
      Console.WriteLine("processor starting.");

      try
      {
        _server.Start();
      }
      catch (Exception)
      { …
Run Code Online (Sandbox Code Playgroud)

c# architecture web-services topshelf nancy

7
推荐指数
1
解决办法
1290
查看次数

查看pdf时隐藏或修改Webview2的工具栏

我正在使用新的 Webview2 控件在我的 WPF 应用程序中呈现 Pdf 文件。

这运行良好,但我想自定义工具栏以隐藏例如某些条件下的保存按钮。我没有找到直接从 Webview2/CoreWebView2 对象执行此操作的方法或属性。

但是,如果我检查呈现 pdf 时生成的网页代码,我可以看到保存按钮所在的部分

在此处输入图片说明

是否可以在呈现之前拦截整个页面并更改 html ?我知道这样做很脏,因为它需要查找可能会更改的类 Id,但它现在可以作为临时解决方案使用。

pdf webview2

6
推荐指数
2
解决办法
873
查看次数

Knockout JS + Bootstrap + Icons + html绑定

好吧,这个让我疯了......我似乎无法弄清楚在淘汰赛中制作html绑定的正确方法,与twitter bootstrap元素很好地配合.

我有,以下HTML:

<li><a href="#"><i class="icon-user"></i> Enable/Disable User</a></li>
Run Code Online (Sandbox Code Playgroud)

这条线实际上是一些其他li的一部分,但是我只显示了我需要的简单性.

正如你所看到的,我也在这里使用twitter bootstrap,正如icon类所证明的那样.

好的,这一切都很好,当我渲染我的菜单标签正确显示时,所有都很好地呈现在引导风格中,一切都很棒.

现在,我想改变这一点,因此,不是菜单选项总是说同样的东西,它会根据视图模型而改变.

对于我的视图模型,我使用的是带有视图模型的knockout.js,如下所示:

function UserListViewModel()
{
  var self = this;
  self.ListItems = ko.observableArray([]);

  self.LoadListData = function()
  {
    self.ListItems([]);
    $.getJSON('/api/getusers',null,function(results)
    {
      self.ListItems(results);
    }
  }
} 
Run Code Online (Sandbox Code Playgroud)

使用'LoadListData'函数加载时,可观察数组工作正常,并使用我在Json中的API返回的记录数组加载ListItems,每条记录如下所示:

{"recordid":1,"loginname":"joe","fullname":"joe person","isallowedlogin":1}

这只是一条记录,有多条记录,都是从我的数据库中的用户表中检索的

这个问题感兴趣的属性是"isallowedlogin"属性.

我目前正在使用敲除模板绑定将此用户列表绑定到我的文档中的表:

<tbody data-bind="template: { name: 'UserListItemTemplate', foreach: ListItems, as: 'ListItem' }">
</tbody>
Run Code Online (Sandbox Code Playgroud)

我在这个问题的开头展示的LI标签是该模板的一部分......

<script type="text/html" id="UserListItemTemplate">
  <tr data-bind="css: { success: loginallowed == 1, error: loginallowed == 0}">
    <td data-bind="text: recordid">xx</td>
    <td>
      <li><a href="#"><i class="icon-user"></i> Enable/Disable User</a></li>
    </td>
  </tr>
</script>
Run Code Online (Sandbox Code Playgroud)

同样,还有其他LI标签和锚点等,我只展示了这个问题需要什么. …

html icons binding twitter-bootstrap knockout-2.0

5
推荐指数
1
解决办法
4257
查看次数

无法在本地服务器上推送git repo

我在我的网络上设置了一个本地Git服务器,但是我在将项目代码提交给它时遇到了问题.

以下是我到目前为止尝试的步骤:

  • 使用visual studio 2013创建一个新项目.然后,当我仍在IDE中时,我在解决方案资源管理器中右键单击我的解决方案,然后将解决方案添加到源代码管理中.对于源代码控制类型,我使用'Git'作为我的本地服务器的类型.我在本地服务器上创建了这个项目,地址为192.168.0.1

  • 设置好所有内容后,我将项目提交到源代码管理系统并推送更改.

  • 然后我关闭了我刚刚提交的解决方案,并关闭了visual studio.

  • 然后我转移到另一台机器(我想在我的项目上工作)打开visual studio 2013,打开Team explorer并克隆我刚刚在前面的步骤中创建的项目.

  • 我使用以下设置来克隆这个新项目:

    Git repo to clone:192.168.0.1/GitTest/Test1

    克隆的位置:C:/ Users/Me/Desktop/GitTest /

一旦我点击克隆按钮,一切都按预期工作,解决方案是在新机器上创建的,我最初创建的文件和一切看起来都不错.

以前克隆的项目在visual studio中打开很好,我看到了我希望在我的解决方案资源管理器中看到的内容.

  • 我的下一步是向项目添加一些代码,我这样做是以通常的方式添加新项目并输入一些代码,然后保存它.

  • 一旦我提交了一些代码,我就会回到团队资源管理器中,找到我的更改列表,然后单击所需的按钮来提交它们.

在这一点上,事情开始失败.

在Un-Synced提交部分中,我单击标记为push的按钮,然后立即显示一条错误消息,说明以下内容:

发生错误.详细消息:libgit2引发了一个错误.类别=未知(错误).本机库未提供任何错误消息.

我不知道这个错误意味着什么或如何解决它,有没有人在这里遇到过这个错误,甚至是他们能够解决的类似情况,如果有的话,任何人都可以告诉我他们是如何设法让事情发生的.

如果可以的话,非常感谢.

git visual-studio-2013

5
推荐指数
1
解决办法
6407
查看次数