小编Per*_*rcy的帖子

如何使用WPF中的Segoe MDL2 Assets字体以编程方式创建文本块

我想这应该很容易,但是我得到了一堆方盒,而不是我需要的图标.

最初我在xaml中编写了一个菜单:

code omitted
<ListBoxItem Name="menuHome" >
<StackPanel Orientation="Horizontal">
    <TextBlock FontFamily="Segoe MDL2 Assets" Text="&#xE10F;" FontSize="16" VerticalAlignment="Center" />
    <TextBlock Text="Home" FontSize="16" VerticalAlignment="Center" Padding="15,0,0,0"/>
</StackPanel>
</ListBoxItem>
code omitted
Run Code Online (Sandbox Code Playgroud)

我现在必须动态创建此菜单,所以我有以下内容:

ListBoxItem menuHome = new ListBoxItem();
StackPanel menuHomeStackPanel = new StackPanel() { Orientation = Orientation.Horizontal };
menuHomeStackPanel.Children.Add(new TextBlock() { FontFamily = new FontFamily("Segoe MDL2 Assets"), FontSize = 16, VerticalAlignment = VerticalAlignment.Center, Text = "&#xE10F;" });
menuHomeStackPanel.Children.Add(new TextBlock() { FontSize = 16, VerticalAlignment = VerticalAlignment.Center, Text = "Home", Padding = new Thickness(15, 0, 0, 0) …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

EditorConfig 每个参数的新行用于函数调用

我一直在搜寻文档,我不认为这作为一个选项存在,但基本上我想强制函数调用的每个参数都在新行上。

例如我讨厌这个:

var result = GetResult(request, startDate, endDate, myTypes,
                    false, false, pageNumber);
Run Code Online (Sandbox Code Playgroud)

我更讨厌这个(每行不同数量的参数):

var result = GetResult(request, startDate, endDate, myTypes,
                    person, thing, 
                    false, false, pageNumber, penny, job, situation, context);
Run Code Online (Sandbox Code Playgroud)

我希望有一个editorconfig条目可以将上述内容变为:

var result = GetResult(
    request, 
    startDate, 
    endDate, 
    myTypes,
    false, 
    false, 
    pageNumber);
Run Code Online (Sandbox Code Playgroud)

var result = GetResult(
    request, 
    startDate, 
    endDate, 
    myTypes,
    person, 
    thing, 
    false, 
    false, 
    pageNumber, 
    penny, 
    job, 
    situation, 
    context);
Run Code Online (Sandbox Code Playgroud)

理想情况下,我能够在强制执行上述操作之前指定最大参数数量,但这可能是一个白日梦,例如我希望 1 或 2 个,甚至 3 个参数保留在下面的一行上:

var result1 = GetResult(request);
var result2 = GetResult(request, startDate);
var result3 = …
Run Code Online (Sandbox Code Playgroud)

c# editorconfig

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

限制 azure 管道仅一个接一个地运行,而不是并行运行

我已经在 Azure 中设置了 PR 管道。作为该流程的一部分,我运行了许多回归测试。这些针对回归测试数据库运行 - 我们必须在测试开始时清除数据库,以便我们确定其中有哪些数据以及应该从中得出什么。

这一切都工作正常,直到管道并行运行多次 - 然后回归数据库被多次写入,并且从它返回的数据不是预期的。

我怎样才能停止并行运行的管道 - 我已经尝试过谷歌,但找不到我正在寻找的东西。

如果管道正在运行,则下一个构建应该等待(不是所有管道 - 我想将其设置在单个管道上),这可能吗?

azure azure-devops azure-pipelines

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

为什么我不能将一个smallint从MSSQL转换为int,如下所示:int x =(int)dt.Rows [x] ["smallIntColumn"]

只是在寻找一个解释 - 问题几乎解释了所有,但这里有点额外:

//this line works OK
int i = Convert.ToInt32(dt.Rows[x]["SmallintColumnName"]);

//this line errors out
int j = (int)dt.Rows[x]["SmallintColumnName"];
Run Code Online (Sandbox Code Playgroud)

我发现这很奇怪,但我想有一个有效的论据,说明为什么会这样.

谢谢.

编辑:您好@Damien_The_Unbeliever - 它是一个InvalidCastException - 指定的强制转换是无效的.我想我需要阅读拳击和拆箱.我认为两者都有效.现在我刚试过:

int k = (Int32)r_dtAttribute.Rows[x]["CultureId"];
Run Code Online (Sandbox Code Playgroud)

这也失败了同样的InvalidCastException - 所以任何人都可以告诉我它们之间的实际差异

//fails
int k = (Int32)r_dtAttribute.Rows[x]["CultureId"];
Run Code Online (Sandbox Code Playgroud)

//works
int i = Convert.ToInt32(dt.Rows[x]["SmallintColumnName"]);
Run Code Online (Sandbox Code Playgroud)

Convert.ToInt32函数做什么只是用(Int32)进行转换不行?

谢谢

c# casting

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

从HttpContext.Current.User获取AspNetUser

使用MVC 5。

我是新来的UsersIdentitiesClaims

我如何AspNetUser从那里得到HttpContext.Current.User?我知道,我可以使用HttpContext.Current.User.Identity.Name(这是用户的电子邮件地址,我的系统上),然后打AspNetUser表的用户,但有没有更好的办法让AspNetUserHttpContext.Current.User我失踪?例如它HttpContext.Current.User已经包含在某个地方了吗?

我曾经尝试过使用Google,但并未真正找到该特定问题的任何答案。

c# asp.net-mvc asp.net-mvc-5

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

ASP.NET MVC 不良实践:具有必需属性的可选子模型

谷歌上有很多这方面的资源,但我无法完全理解我的场景中需要做什么:

我有这门课:

public class CompanyLanguage : EntityBase
{
    public int CompanyId { get; set; }
    public int LanguageId { get; set; }
    public bool IsDefault { get; set; }


    public virtual Company Company { get; set; }
    public virtual Language Language { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Language定义为:

public class Language:EntityBase
{
    [Required]
    [DisplayName("Language Code")]
    public string LanguageCode { get; set; }

    [Required]
    [MaxLength(2, ErrorMessage ="2 characters maximum")]
    [DisplayName("2 Char Language Code")]
    public string LanguageCode2Char { get; set; }

    [Required] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc

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

具有多个请求的模拟 HttpClient

我正在尝试对调用 API 的函数进行单元测试。我已经使用如下模拟成功完成了此操作HttpMessageHandler,它允许我伪造来自 API 的响应:

private static Mock<HttpMessageHandler> GetMockHttpMessageHandler(string mockResponse)
{
    var mockMessageHandler = new Mock<HttpMessageHandler>();
    mockMessageHandler.Protected()
        .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>())
        .Returns(Task.FromResult(new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.OK,
            Content = new StringContent(mockResponse)
        }));
    return mockMessageHandler;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。我已经能够测试一半的函数,后半部分进行另一个 api 调用 - 然后两个响应都被包装到系统使用的对象中。问题是,第二个 api 需要有不同的模拟响应。

我以为我可以将ItExpr.IsAny<HttpRequestMessage>()上面的代码更改为new HttpRequestMessage(HttpMethod.Post, "http://LiveUrl.com/AuthenticateUserCredential"),然后Setup/Returns根据 URI 更改响应,但我尝试如下(只有一个Setup/Return要测试,我没有破坏前半部分测试)

private static Mock<HttpMessageHandler> GetMockHttpMessageHandler(string mockResponse)
{
    var mockMessageHandler = new Mock<HttpMessageHandler>();
    mockMessageHandler.Protected()
        .Setup<Task<HttpResponseMessage>>("SendAsync", new HttpRequestMessage(HttpMethod.Post, "http://LiveUrl.com/AuthenticateUserCredential"), ItExpr.IsAny<CancellationToken>())
        .Returns(Task.FromResult(new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.OK,
            Content …
Run Code Online (Sandbox Code Playgroud)

c# moq httpclient

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

使用ajax javascript将int数组传递给MVC控制器

我在这做错了什么?

我可以成功地将4个bool参数传递给控制器​​.现在我想将一个int数组传递给我的控制器,但是它不起作用 - 我在示例中留下了我的工作代码(注释掉了)所以你可以看到我没有改变那么多 - 我想我是错过了一些简单的东西(事后是17:44 !!!).我可以看到使用以下alert(rolesChecked);语句填充数组:

var rolesChecked = [];
$('[type="checkbox"].role-checkbox').each(function () {
    if (this.checked)
    {
        rolesChecked.push($(this).val());
    }
});

alert(rolesChecked);

//var administrator = $('#cbAdministrator').is(":checked");
//var manager = $('#cbManager').is(":checked");
//var technician = $('#cbTechnician').is(":checked");
//var transcriber = $('#cbTranscriber').is(":checked");

if (rolesChecked.count > 0){//administrator || manager || technician || transcriber) {
    $.ajax({
        url: '@Url.Action("GetFutureHolidays", "Employee")',
        type: 'GET',
        dataType: 'json',
        // we set cache: false because GET requests are often cached by browsers
        // IE is particularly aggressive in that respect
        cache: …
Run Code Online (Sandbox Code Playgroud)

javascript ajax asp.net-mvc

3
推荐指数
1
解决办法
6937
查看次数

C#Task.WaitAll没有等待

我的目标是从Amazon Web Services存储桶下载图像.

我有以下代码功能,可以一次下载多个图像:

public static void DownloadFilesFromAWS(string bucketName, List<string> imageNames)
{
    int batchSize = 50;
    int maxDownloadMilliseconds = 10000;

    List<Task> tasks = new List<Task>();

    for (int i = 0; i < imageNames.Count; i++)
    {
        string imageName = imageNames[i];
        Task task = Task.Run(() => GetFile(bucketName, imageName));
        tasks.Add(task);
        if (tasks.Count > 0 && tasks.Count % batchSize == 0)
        {
            Task.WaitAll(tasks.ToArray(), maxDownloadMilliseconds);//wait to download
            tasks.Clear();
        }
    }

    //if there are any left, wait for them
    Task.WaitAll(tasks.ToArray(), maxDownloadMilliseconds);
}

private static void GetFile(string …
Run Code Online (Sandbox Code Playgroud)

c# task

3
推荐指数
1
解决办法
801
查看次数

无法在 Docker 容器中获取 ASPNETCORE_ENVIRONMENT 变量

我有一个 .netcore Web 应用程序,在我的机器上运行良好。我想让它在 Docker 容器中运行。

我正在尝试设置 ASPNETCORE_ENVIRONMENT 环境变量,但在读取此变量的代码中,该值始终为 null。

const string environmentVariableName = "ASPNETCORE_ENVIRONMENT";
var environmentName = Environment.GetEnvironmentVariable(environmentVariableName);

if (string.IsNullOrEmpty(environmentName))
{
    //I'm only doing this is I can be certain that the environment variable isn't being retrieved
    environmentName = "Error: UNABLE TO DETERMINE THE VALUE OF ASPNETCORE_ENVIRONMENT";
}
Run Code Online (Sandbox Code Playgroud)

我在下面添加了各种版本的 dockerfile,这是我当前的尝试。我有一个默认参数被设置为环境变量:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

ARG ASPNETCORE_ENVIRONMENT="dev"
ENV ASPNETCORE_ENVIRONMENT=$ASPNETCORE_ENVIRONMENT

RUN echo $ASPNETCORE_ENVIRONMENT

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy …
Run Code Online (Sandbox Code Playgroud)

environment-variables docker

3
推荐指数
1
解决办法
1793
查看次数

给定构成边界的 GPS 坐标列表,我如何计算我的位置是否在该边界内?

假设我有数百个甚至数千个 GPS 坐标、纬度和经度,它们构成了一个国家/地区的边界。

我也有我目前的位置纬度和经度。

我如何确定(使用 C#,为 Windows10 UWP 编程)我的位置是否在某个国家/地区的边界内?

EG 假设我拥有构成下图中红线的所有点。如果我在 X 位置,我的函数将返回 true。如果我在 Y 位置,我的函数将返回 false。

地图示例

latitude-longitude point-in-polygon computational-geometry

2
推荐指数
1
解决办法
1401
查看次数

如何在不破坏 HTML 的情况下将 &lt;span&gt; 包裹在 HTML 中的匹配单词周围

使用 C# - WinForms

我有一个有效的 HTML 字符串,它可能包含也可能不包含各种 HTML 元素,例如<a>.

我需要搜索此 HTML 并突出显示某些关键字 - 突出显示是通过在<span>文本周围添加内联样式来完成的。我不应该对<a>标签或用户实际上不可见的任何其他 HTML 标签执行此操作。

例如目前我正在这样做:

html = html.Replace(phraseToCount, "<span style=\"background: #FF0000; color: #FFFFFF; font-weight: bold;\">" + phraseToCount + "</span>");
Run Code Online (Sandbox Code Playgroud)

这种方法可行,但会破坏<a>标签。因此,在下面的示例中,只有谷物一词的第一个实例应该以 ' 结尾<span>

<p>To view more types of cereal click <a href="http://www.cereal.com">here</a>.</p>
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做呢?

编辑-更多信息。

这将在 Winforms 应用程序中运行,因为获取 HTML 的最佳方法是使用 WebBrowser 控件 - 我将抓取网页并突出显示各种单词。

html c#

2
推荐指数
1
解决办法
689
查看次数

Kentico UserInfoProvider在控制台应用程序中无法正常工作

此代码在Kentico网站中正常工作:

var users = UserInfoProvider.GetUsers();
for (int x = 0; x < users.Count(); x++
{
    UserInfo currentUser = users.ElementAt(x);
    currentUser.SetValue("AcceptsAlerts", equivalentSubscriber.Status != SubscriberStatus.Unsubscribed);
    UserInfoProvider.SetUserInfo(currentUser);
}
Run Code Online (Sandbox Code Playgroud)

当我将代码移动到控制台应用程序时,对UserInfoProvider的任何调用都会导致错误:"找不到对象类型'cms.usersettings'"

对于获取用户的初始调用,我可以在控制台应用程序中这样做:

DataSet usersds = new CMS.DataEngine.DataQuery("cms.user.selectall").Execute();
Run Code Online (Sandbox Code Playgroud)

然后使用用户数据遍历数据集的Table1:

UserInfo currentUser = new UserInfo(dtUsers.Rows[x]);
Run Code Online (Sandbox Code Playgroud)

一切都很好并且正常工作,直到我将更新的用户写回数据库.除了调用之外,我找不到另一种写入数据的方法:

UserInfoProvider.SetUserInfo(currentUser);
Run Code Online (Sandbox Code Playgroud)

有谁知道另一种保存用户数据的方法?或者解决错误.错误是运行时错误,据我所知,我已经引用了我需要的所有内容.我正在编辑的字段是添加到cmsUser表的自定义字段.

使用语句信息:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using CMS;
using CMS.CustomTables;
using CMS.DataEngine;
using CMS.Membership;
Run Code Online (Sandbox Code Playgroud)

c# kentico

0
推荐指数
1
解决办法
1118
查看次数