草庐IT

TDerived

全部标签

c# - 我如何告诉 AutoFixture 在实例化 TBase 时始终创建 TDerived?

我有一个深层嵌套的对象模型,其中一些类可能看起来有点像这样:classTBase{...}classTDerived:TBase{...}classContainer{ICollectioninstances;...}classTopLevel{Containercontainer1;Containercontainer2;...}我想创建我的顶级对象作为测试夹具,但我希望所有TBase实例(例如上面的instances集合中的)是TDerived而不是TBase的实例。我认为我可以使用类似的东西非常简单地做到这一点:varfixture=newFixture();fixture.Cu

c# - 为什么我不能对两个泛型类型参数使用协变?

考虑以下示例:classBase{}classDerived:Base{}classTest1{privateListm_X;publicIEnumerableGetEnumerable(){returnm_X;}}这编译得很好,因为IEnumerable在T中协变.但是,如果我做完全相同的事情,但现在使用泛型:classTest2whereTDerived:TBase{privateListm_X;publicIEnumerableGetEnumerable(){returnm_X;}}编译错误Cannotconvertexpressiontype'System.Collection

c# - 如何将 Task<TDerived> 转换为 Task<TBase>?

因为C#的Task是一个类,你显然不能转换Task到Task.但是,您可以:publicasyncTaskRun(){returnawaitMethodThatReturnsDerivedTask();}有没有我可以调用的静态任务方法来获得Task本质上只是指向底层任务并转换结果的实例?我想要这样的东西:publicTaskRun(){returnTask.FromDerived(MethodThatReturnsDerivedTask());}有这样的方法吗?仅出于此目的使用异步方法是否有任何开销? 最佳答案 Doessucham

c# - 如何将 Task<TDerived> 转换为 Task<TBase>?

因为C#的Task是一个类,你显然不能转换Task到Task.但是,您可以:publicasyncTaskRun(){returnawaitMethodThatReturnsDerivedTask();}有没有我可以调用的静态任务方法来获得Task本质上只是指向底层任务并转换结果的实例?我想要这样的东西:publicTaskRun(){returnTask.FromDerived(MethodThatReturnsDerivedTask());}有这样的方法吗?仅出于此目的使用异步方法是否有任何开销? 最佳答案 Doessucham