小编Ser*_*erG的帖子

.Net Fakes - 当基类是抽象的时,如何填充继承的属性?

我正在尝试编写一个涵盖以下行的单元测试

var fileFullName = fileInfo.FullName;
Run Code Online (Sandbox Code Playgroud)

其中fileInfo是FileInfo的一个实例.

我使用fakes来填充FileInfo对象,但是我无法为FullName属性提供值,因为它是从基类继承的.

对于未继承的Name属性,我可以这样做:

ShimFileInfo.AllInstances.NameGet = info => OriginalFullName;
Run Code Online (Sandbox Code Playgroud)

Microsoft提供的答案是在基类上创建填充程序,在本例中为FileSystemInfo.但如果我试试这个:

ShimFileSystemInfo.AllInstances.FullNameGet = info => OriginalFullName;
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为FileSystemInfo是一个无法创建的抽象类,因此无法进行填充.

在这种特殊情况下,我可以解决它,因为我可以结合DirectoryName和Name属性使其可测试,但似乎很疯狂,我不能只使用我想要的属性,因为它恰好来自基地.

有没有人来解决这个问题并设法解决它?

c# inheritance unit-testing shim microsoft-fakes

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

从.Net的角度来看Windows服务的体系结构

几个Windows服务可以共享一个进程.在C#中,他们将从以下开始:

ServiceBase.Run(new MyService1(), new MyService2());
Run Code Online (Sandbox Code Playgroud)

run方法的调用阻塞main()执行的线程.同时处理服务事件.那他们在哪里执行?

他们是否在"主要"流程中使用异步过程调用,该过程不仅被阻止,而且处于警报等待状态?如果是这样的话,共享多个服务的过程在性能上有缺陷.处理程序是否在单独的线程中运行?它们是否在包含Run()呼叫的进程之外执行?

.net c# windows service winapi

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

Mongodb:文本索引与 Atlas 搜索

这两个功能看起来非常相似,但Atlas Search很新鲜,而且可能更强大。Atlas Search 可以替代 MongoDb 中的文本索引吗?文本索引会被弃用吗?我是否错过了一些本质区别?Atlas Search是Atlas云平台的专有功能吗?

full-text-search mongodb mongodb-atlas mongodb-atlas-search

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

HttpClient。在自动发现的代理上进行身份验证的默认凭据

控制狂免责声明:是的,关于 HttpClient 和代理有很多问题,但它们至少使用其中之一

  • 显式(非默认)代理凭据
  • 显式(非 WPAD)代理配置
  • 已弃用的 Api,例如 WebProxy.GetDefaultProxy、WebRequest 等。

根据dotnet 开发人员的说法

如果 HttpClientHandler.Proxy 默认值为 null,则 HttpClientHandler 将使用 IE 代理设置

因此,要使用 HttpClient 设置正确的公司代理,我们不需要任何其他操作,只需

_client = new HttpClient()
Run Code Online (Sandbox Code Playgroud)

并且没有官方方法来选择代理。但是我如何传递默认 AD 凭据以在自动发现的代理上进行身份验证呢?我刚刚收到“(407) 需要代理身份验证”。

PS 可能还有另一个问题,并且在特殊帐户下作为服务运行(尤其是在 Linux 上),此代码没有 IE 设置可供使用。所以我们需要重新实现WPAD。

.net c# proxy credentials dotnet-httpclient

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

JS:Object.defineProperty() 和代理

Object.defineProperty()和Proxy之间有什么区别?在我看来,它们本质上确实是相同的,仅对反应性、验证和默认值的实现有用。

所以它看起来defineProperty只提供了 Proxy 可用的功能的子集。 defineProperty当 Proxy 保持原点不变时更改原始对象。代理允许一次甚至提前设置所有内容(例如拦截尚未创建的成员)。代理还处理函数调用,并有足够的能力覆盖构造函数和删除运算符。

如果是对的,也许我们不再需要了defineProperty。

javascript properties object

6
推荐指数
0
解决办法
946
查看次数

GitOps 与传统 CI/CD 的区别

在正常的kubernetes CI/CD过程中,会发生以下过​​程:

  • 从 git 克隆代码
  • 构建并推送 docker 镜像
  • 使用更新的代码更新 kubernetes 部署

根据gitops定义

GitOps 是一种新的持续部署方法,它利用 Git 作为声明性基础设施和应用程序的单一事实来源,提供修订和变更控制。使用 GitOps,系统通过提交拉取请求(以及后续合并)来运行,以实现 Git 存储库中表示的系统的所需状态

我对 gitops 的理解是,当你更新 git 中的任何内容时(因为这是事实来源),kubernetes 的所需状态会更改为最新状态,并部署最新代码。

没有 gitops 的传统 CI/CD 的最终结果:新代码部署为 kubernetes 部署

gitops 的最终结果:新代码部署为 kubernetes 部署

我无法弄清楚其中的区别。抱歉,如果你听起来很奇怪。但我有点新,正在探索 gitops 。

git continuous-integration continuous-deployment kubernetes

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

等待异常处理完成所有任务

根据MSDN Task.WaitAll在执行至少一个Task实例期间抛出异常时立即通过AggregateException.我需要等待所有任务完成处理每个抛出的异常.所以我需要做类似的事情:

while (true)
{
    try
    {
        Task.WaitAll(tasks);
        break; //only if no exception is occured
    }
    catch (AggregateException aex)
    {
        //exceptions handling...
    }
}
Run Code Online (Sandbox Code Playgroud)

或者是一些更理性的方式?

.net c# exception-handling wait task-parallel-library

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

使用c#分析便携式可执行文件

C/C++具有一组预定义的结构和常量,对应于exe-header等.是否存在一些类比标准命名空间,C#中的类用于分析可移植可执行文件?或者它只是非托管不安全更多本地语言的特权?

.net c# reverse-engineering portable-executable

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

从任务调用Thread.Sleep

在任务中使用Thread.Sleep()是否正确.或者只是一个与任务一起使用的计时器(.Net 4.5和后者中的Task.Delay())?或者可能存在另一种方法.

.net delay task-parallel-library c#-4.0 thread-sleep

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

在WPF中将行集合绑定到画布

我有一个由其边界点指定的可观察的线段集合.如何绑定它以在画布上绘制线条?

我已经看到了只使用一个点定义位置的形状解决方案.但是为了将这种方法应用于线条,它需要在坐标上进行笨拙的预计算以获得外部矩形的位置并使线条坐标相对于它.有没有办法避免它?

data-binding wpf binding drawing shapes

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

如何在没有P/Invoke的情况下从c#创建挂起的进程?

WinAPI CreateProcess具有标志CREATE_SUSPENDED,因此可以在完成某些操作之前将进程附加到JobObject,然后为其主线程调用ResumeThread.我找到的唯一一个寻找解决方案的是11年前写的这篇文章!

c# pinvoke process createprocess suspend

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