小编fra*_*fra的帖子

我什么时候应该使用装饰品?

WPF非常棒,因为有很多方法可以实现您的目标.例如,根据我的理解,装饰者可以向UI元素添加一些控件,但我认为通过包含附加元素的自定义控件可以实现相同的行为.

所以,我的问题是:我应该何时更喜欢装饰者更复杂(但我认为,更灵活)的自定义控制?请考虑我正在广泛使用MVVM模式,我想将命令绑定到附加元素.

特别是,我正在设计一个图表设计器应用程序,我想为我的形状添加连接点.我应该在自定义控件和装饰器之间做出决定的另一个示例是显示自动定位以"跟随"该线的标签的线.

谢谢

wpf adorner

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

PowerShell 字符串插值语法

我总是使用以下语法来确保变量在字符串中展开:

"my string with a $($variable)"

我最近遇到了以下语法:

"my string with a ${variable}"

它们是等价的吗?有什么区别吗?

syntax powershell string-interpolation

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

服务总线工作流程活动

我想通过一些特定的活动访问工作流程中的服务总线队列和主题.

我找不到适合这种情况的任何东西(这篇MSDN文章Roman Kiss的这篇文章)是最接近的.

我想设计一个自定义活动,使用QueueClient异步接收代理消息,使用使用async/await模式实现的BeginReceive方法(请参阅我的问题).

首先,我想问一下,为什么我更喜欢建议的方法(改编的WCF)而不是我想要的方法(使用QueueClient).

然后,我将非常感谢以持久友好的方式设计它.

更新:

这是我到目前为止所尝试的:

public class AsyncReceiveBrokeredMessage : AsyncCodeActivity<BrokeredMessage>
{
    [RequiredArgument]
    public InArgument<string> ConnectionString { get; set; }

    [RequiredArgument]
    public InArgument<string> Path { get; set; }

    protected sealed override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)
    {
        var connectionString = this.ConnectionString.Get(context);
        var path = this.Path.Get(context);
        var queueClient = QueueClient.CreateFromConnectionString(connectionString, path);
        var cts = new CancellationTokenSource();
        context.UserState = new ReceiveState
                                {
                                    CancellationTokenSource = cts,
                                    QueueClient = queueClient
                                };
        var task = …
Run Code Online (Sandbox Code Playgroud)

workflow-foundation-4 async-await c#-5.0 azure-servicebus-queues

19
推荐指数
1
解决办法
1184
查看次数

Asp.net在开发环境中"禁用"身份验证

是否可以在不改变逻辑的情况下在asp.net核心应用程序中"禁用"身份验证?

我有一个.net网站,它使用外部身份服务器应用程序进行身份验证.无论如何,我希望能够在我开发它时模拟身份验证(ASPNETCORE_ENVIRONMENT =开发),对所有忽略授权属性的操作进行访问.

是否可以仅仅模拟服务集合中的某些服务?

asp.net-core

16
推荐指数
6
解决办法
5683
查看次数

Rx运算符指向不同的序列

重要提示:有关结果的说明和更多详细信息,请查看我的答案

我需要对通常复制的一系列对象/事件进行分组和过滤,并使用TimeSpan间隔缓冲它们.我尝试用大理石图解释它更好:

X-X-X-X-X-Y-Y-Y-Z-Z-Z-Z-X-X-Y-Z-Z
Run Code Online (Sandbox Code Playgroud)

会产生

X---Y---Z---X---Y---Z
Run Code Online (Sandbox Code Playgroud)

其中X,Y和Z是不同的事件类型,'---'表示间隔.另外,我还想通过一个关键属性区分它可用于所有类型,因为它们有一个共同的基类:

X, Y, Z : A
Run Code Online (Sandbox Code Playgroud)

和A包含属性Key.使用符号Xa表示X.Key = a,最终样本将是:

X.a-X.b-X.a-Y.b-Y.c-Z.a-Z.a-Z.c-Z.b-Z.c
Run Code Online (Sandbox Code Playgroud)

会产生

X.a-X.b---Y.b-Y.c-Z.a-Z.c-Z.b
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我组合所需的Linq运算符(可能是DistinctUntilChanged和Buffer)来实现这种行为吗?谢谢

更新18.08.12:

根据要求,我试着给出一个更好的解释.我们有设备收集和发送事件到Web服务.这些设备有一个旧的逻辑(我们不能因为向后兼容而改变它),并且它们不断发送事件直到它们收到确认; 在确认之后,他们将下一个事件发送到队列中,依此类推.事件包含单元的网络地址和一些其他属性,用于区分每个设备的队列中的事件.事件如下所示:

class Event
{
    public string NetworkAddress { get; }

    public string EventCode { get; }

    public string AdditionalAttribute { get; }
}
Run Code Online (Sandbox Code Playgroud)

目标是每隔5秒处理从所有设备接收的区分事件,将信息存储在数据库中(这就是为什么我们不想批量执行)并将ack发送到设备.让我们举个例子,只有两个设备和一些事件:

Device 'a':
Event 1 (a1): NetworkAddress = '1', EventCode = A, AdditionalAttribute = 'x'
Event 2 (a2): NetworkAddress = '1', EventCode = A, AdditionalAttribute = 'y'
Event 3 (a3): NetworkAddress = '1', EventCode = …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

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

我应该公开Actions而不是事件吗?

在使用WF 4.0时,我注意到WorkflowApplication类公开了动作属性(Aborted,Complete等等)而不是事件.有具体原因吗?我应该何时更喜欢动作属性而不是事件?

谢谢

c# lambda

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

Rx groupby直到条件改变

我坚持使用rx和特定的查询.问题:

许多单个更新操作由连续流产生.操作可以是插入或删除.我想缓冲那些流并在当时执行一些操作,但保留顺序非常重要.此外,操作应该每隔X秒缓冲并按顺序完成

例:

在:

insert-insert-insert-delete-delete-insert-delete-delete-delete-delete
Run Code Online (Sandbox Code Playgroud)

日期:

insert(3)-delete(2)-insert(1)-delete(4)
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的应用程序来测试它,它或多或少地工作,但它不尊重传入插入/删除的顺序

namespace RxTests
{
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reactive.Concurrency;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using System.Text;
using System.Threading;

internal class Program
{
    private static readonly Random Random = new Random();

    private static readonly CancellationTokenSource ProducerStopped = new CancellationTokenSource();

    private static readonly ISubject<UpdateOperation> operations = new Subject<UpdateOperation>();

    private static void Main(string[] args)
    {
        Console.WriteLine("Starting production");
        var producerScheduler = new EventLoopScheduler();
        var consumerScheduler = new EventLoopScheduler();
        var producer =
            Observable.Interval(TimeSpan.FromSeconds(2))
                      .SubscribeOn(producerScheduler) …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

8
推荐指数
1
解决办法
2208
查看次数

powershell参数分配默认值(C#cmdlet)

我正在使用普通的C#设计一个cmdlet.是否可以为参数定义默认值?

脚本cmdlet:

[Parameter] [string] $ParameterName = "defaultValue"
Run Code Online (Sandbox Code Playgroud)

哪个是C#的等价物?

[Parameter]
public string ParameterName { get; set; }
Run Code Online (Sandbox Code Playgroud)

谢谢?

c# powershell cmdlets

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

实现AsyncCodeActivities(使用C#async/await)

很长一段时间我使用以下模板编写自定义AsyncCodeActivity类:

public sealed class MyActivity : AsyncCodeActivity<T>
{
    protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)
    {
        var task = new Task<T>(this.Execute, state, CancellationToken.None, TaskCreationOptions.AttachedToParent);
        task.ContinueWith(s => callback(s));
        task.Start();
        return task;
    }

    protected override T EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
    {
        var task = result as Task<T>;
        if (task.Exception != null)
        {
            // Error handling. Rethrow? Cancel?
        }

        return task.Result;
    }

    private T Execute(object state)
    {
        // Logic here
        return default(T);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一些问题:

  1. 哪种方法可以处理异常?重新抛出?将上下文设置为已取消?
  2. 是否有一种优雅的方式来编写现在可用的async/await语法?

谢谢

c# workflow-foundation-4 async-await

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

C# 控制台应用程序身份验证会话

如何az login在 C# 控制台应用程序中实现 (Azure CLI) 体验?

在这种情况下,将打开浏览器窗口,用户进行身份验证,然后他就可以访问私有资源。我的猜测是身份验证令牌存储在某个地方,但是在哪里呢?会话变量、文件..?

更新

我发现有一个文件夹~/.azure存储了相关信息。所以问题更多地集中在第一部分(启动浏览器并获取结果令牌)。

c# azure azure-cli2 az

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