小编Mat*_*ton的帖子

Resharper中是否有方法/功能列表功能?

使用R#有一种方法可以查看/导航当前类中的方法集吗?

我知道你可以使用VS'原生的右上角下拉菜单,但我想要一个快捷方式.

这似乎是R#的一个显而易见的特征,因为与其他程序员的编辑相比,这是我在VS中最想念的东西.

谢谢,马特

(ps.抱歉,如果这篇文章出现两次,但第一次尝试似乎没有成功发布)

methods resharper list

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

c#泛型类工厂问题

我想控制一堆类的创建,这些类都共享一个公共接口,并且在构造中都需要一些逻辑.另外,我不希望除了类工厂之外的任何其他代码能够从这些类创建对象.

我的主要障碍是:

(1)对于能够创建类实例的泛型方法,我需要new()约束,这意味着我必须在类上有一个公共构造函数,这意味着它们可以公开创建.

(2)另一种方法是让类本身具有一个返回类实例的静态方法.但我无法从我的泛型类中调用它,因为我需要处理接口/类型,并且不能通过接口进行静态处理.

这是我目前得到的那种东西,但是它使用了new()约束,它允许公开创建我的类:

internal static class MyClassFactory
{
    internal static T Create<T>(string args) where T : IMyType, new()
    {
        IMyType newThing = new T();
        newThing.Initialise(string args);
        return (T)newThing;
    }
}

public interface IMyType
{
    void Initialise(string args);
}

public class ThingA: IMyType
{
public void Initialise(string args)
{
        // do something with args
}
}
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢:)

c# generics static factory

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

有没有办法覆盖 AssemblyInfo.cs 中的属性(例如 AssemblyVersionAttribute)?

我正在使用 dotnet 核心。这是针对 CI 流程,而不是本地构建。我希望允许开发人员为标题等内容创建 AssemblyInfo.cs 文件,但我希望我的构建过程能够控制程序集的版本。

目前我正在使用“dotnet build ... /p:Version=1.2.3.4”命令,但一旦出现 AssemblyInfo.cs 文件,即使 AssemblyInfo.cs 未指定,此版本号也会被取代任何版本属性。

我可以从 CLI 控制版本的唯一方法是删除 AssemblyInfo.cs 文件。有没有什么方法可以做到这一点,而无需在构建之前手动更改 AssemblyInfo.cs 文件?

c# msbuild .net-core

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

MSTEST文件夹部署问题

有没有办法通过MSTEST部署保留文件夹结构?

我有一些现有代码的情况,我在子文件夹中有.config文件(称为"配置").我可以使用MSTEST部署指定此文件夹,但是,无论如何,MSTEST只是将文件从此文件夹复制到运行文件夹(TestResult \\ Out),即它不会创建名为Configuration的子文件夹.这真的搞砸了代码,它失败了.我真的不想开始使用复杂的预测试脚本来创建文件夹等.

任何想法都感激不尽.

马特

deployment mstest

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

如何使用Task.WhenAny并实现重试

我有一个创建多个基于 I/O 的任务的解决方案,我正在使用 Task.WhenAny() 来管理这些任务。但通常许多任务会由于网络问题或请求限制等而失败。

在使用 Task.WhenAny() 方法时,我似乎找不到使我能够成功重试失败任务的解决方案。

这是我在做什么:

var tasks = new List<Task<MyType>>();
foreach(var item in someCollection)
{
   task.Add(GetSomethingAsync());
}
while (tasks.Count > 0)
{
   var child = await Task.WhenAny(tasks);
   tasks.Remove(child);
   ???
}
Run Code Online (Sandbox Code Playgroud)

所以上述结构适用于完成任务,但我还没有找到处理和重试失败任务的方法。该await Task.WhenAny抛出AggregateException,而不是让我检查任务状态。当在异常处理程序中时,我不再有任何方法重试失败的任务。

c# async-await

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