小编Mik*_*keW的帖子

在Xamarin.Forms中绑定自定义视图

我在将Xamarin表单中的自定义视图中的数据绑定到包含页面的视图模型时遇到问题.

我的自定义视图非常简单,一对代表键值对的标签:

<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="KeyValueView">
    <Grid VerticalOptions="Start">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <Label x:Name="KeyLabel" Text="{Binding Key}"  Grid.Column="0" HorizontalOptions="Start" />
        <Label x:Name="ValueLabel" Text="{Binding Value}" Grid.Column="1" HorizontalOptions="EndAndExpand" />
    </Grid>
</ContentView>
Run Code Online (Sandbox Code Playgroud)

后面的代码:

public partial class KeyValueView : ContentView
{
    public KeyValueView()
    {
        InitializeComponent();
        this.VerticalOptions = LayoutOptions.Start;
        this.BindingContext = this;
    }

    public static readonly BindableProperty ValueProperty =
                BindableProperty.Create<KeyValueView, string>(w => w.Value, default(string));

    public string Value
    {
        get {return (string)GetValue(ValueProperty);}
        set {SetValue(ValueProperty, value);}
    }

    public static readonly BindableProperty KeyProperty =
        BindableProperty.Create<KeyValueView, string>(w => …
Run Code Online (Sandbox Code Playgroud)

c# xaml xamarin xamarin.forms

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

使用C#中第二个数组的值替换数组中的给定值

我有一个int数组,其中包含许多负值:

var arrayExisting = new int[]{1,2,-1,3,5,-1,0,0,-1};
Run Code Online (Sandbox Code Playgroud)

另一个数组有一组相应的值我要插入到第一个数组中:

var replacements = new int[]{7,6,5};
Run Code Online (Sandbox Code Playgroud)

有没有一种真正有效的方法呢?

我现在拥有的是:

var newArray = arrayExisting.Select(val =>
        {
            if (val != -1) return val;
            var ret = replacements[i];
            i++;
            return ret;
        }).ToArray();
Run Code Online (Sandbox Code Playgroud)

它相当快.所讨论的数组长度只有大约15个整数,这可能会增加,但不可能超过100.问题是我必须为我的中等测试系统和现实系统做超过25万次我正在考虑将涉及此代码的大约10e10次迭代!

c# linq arrays optimization performance

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

如何从预编译的 dll 中删除清单

我有一个预编译的 c++ dll,我需要从中删除或替换嵌入的清单。有没有办法从命令行执行此操作?我知道可以在 VS 中打开 dll 并简单地删除清单,但如果可能的话,我想自动化这个过程。

c++ manifest visual-studio

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

每个服务器上的hangfire周期性作业

我遇到这样的情况,我需要向hangfire注册的定期作业才能在群集中的每个服务器上运行。

(工作是在本地复制一些文件,因此需要定期在每台服务器上运行)

到目前为止,我已经尝试使用服务器名称的ID注册相同的作业,导致n个服务器的n个作业:

RecurringJob.AddOrUpdate(Environment.MachineName, () => CopyFiles(Environment.MachineName), Cron.MinuteInterval(_delay));
Run Code Online (Sandbox Code Playgroud)

作业本身会检查它是否是正确的服务器,并且仅在以下情况下才执行某些操作:

 public static void CopyFiles(string taskId)
 {
        if (string.IsNullOrWhiteSpace(taskId) || !taskId.Equals(Environment.MachineName))
        {
            return;
        }

        // do stuff here if it matches our taskname
}
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,所有作业都在要出现的第一个服务器上执行,被标记为已完成,因此其他服务器未执行。

有什么方法可以确保作业在所有服务器上运行?

还是有办法确保只有一台服务器可以处理给定的工作?即将作业定位到创建它的服务器上

c# hangfire

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

数据列表作为specflow测试步骤中的参数

我正在寻找一种方法来进行步骤定义,例如:

给出了1,2,3,4的数字集合

并使用int [],List或IEnumerable将其映射到步骤定义

正则表达式(\ d +(,\n +)*)匹配,但意味着我需要两个参数.

目前我有

[Given(@"a collection of numbers (\d+(,\d+)*)")]
public void givencollectionofnumbers(string p0, string p1)
{
    //p0 is "1,2,3,4"
    //p1 is ",4"
}
Run Code Online (Sandbox Code Playgroud)

我有一个简单的workarouns

[Given(@"a collection of numbers (.*)")]
public void givencollectionofnumbers(string p0)
{
    var numbers = p0.Split(',').Select(x => int.Parse(x));
}
Run Code Online (Sandbox Code Playgroud)

但我想以更优雅的方式做到这一点,可能会将数字的类型改为双打,并确保正则表达式仅列出数字列表.

我也不想使用表格,因为对于简单的数据列表来说似乎过多了

有人能帮忙吗

c# regex bdd acceptance-testing specflow

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