草庐IT

Generics

全部标签

c# - 如何调用基于封闭泛型的方法重载?

假设我有三种方法:voidFoo(MemoryStreamv){Console.WriteLine("MemoryStream");}voidFoo(Streamv){Console.WriteLine("Stream");}voidFoo(objectv){Console.WriteLine("object");}我调用方法Foo传递开放泛型类型的第一个参数:voidBar(){Foo(default(T));//justtoshowthescenario//default(T)ornewT()doesn'tmakeadifference,nullisirrelevanthere}我

c# - 将通用字典转换为不同类型

有没有一种快速的方法可以将通用字典从一种类型转换为另一种类型我有这个IDictionary_commands;并且需要将它传递给一个接受稍微不同类型的字典的函数publicvoidHandle(IDictionary_commands); 最佳答案 我想我会写Handle(_commands.ToDictionary(p=>p.Key,p=>(object)p.Value));这不是世界上最有效的事情,但在协方差出现之前,这就是休息。 关于c#-将通用字典转换为不同类型,我们在Stack

c# - 没有通用扩展方法的类型推断

我有以下方法:publicstaticTEventInvocatorParametersUntil(thisTEventInvocatorParametersp,FuncbreakCond)whereTEventInvocatorParameters:EventInvocatorParameterswhereTEventArgs:EventArgs{p.BreakCondition=breakCond;returnp;}还有这个类publicclassEventInvocatorParameterswhereT:EventArgs{publicFuncBreakCondition{ge

c# - 如何从作为对象获取的 IList<> 中获取项目计数?

在一个方法中,我得到一个object.在某些情况下,这object可以是IList“某事”(我无法控制这个“某事”)。我正在尝试:识别这个对象是一个IList(某事)投object进入“IList”以获得Count现在,我陷入困境并寻找想法。 最佳答案 您可以使用is检查您的object是否实现了IList。然后您可以将您的对象转换为IList以获取计数。objectmyObject=newList();//checkifmyObjectimplementsIListif(myObjectisIList){intlistCount=

C# 通用接口(interface)和工厂模式

我正在尝试创建一个通用接口(interface),其中一个方法的参数类型由通用定义编辑在意识到我可能通过在Factory创建方法中指定类型参数混淆了问题后,我稍微更改了问题。我所拥有的是我需要对第3方API进行的两种类型的API调用。第一个使用int类型的Id从API检索记录。第二个也从API检索记录,但Id是一个字符串(guid)。我为每种记录类型(ClientEntity和InvoiceEntity)都有一个类,它们都实现了一个通用接口(interface),我在其中传入了Id类型这是我在其中声明一个带有id参数的方法的接口(interface)publicinterfaceIGe

c# - 要求通用方法在 FAIL 时抛出特定的异常类型

好吧,我知道我完全会因为这个而看起来像个白痴,但我的大脑今天早上没有开始运转。我想要一个方法,我可以说“如果它变坏了,返回这种类型的异常”,对吗?例如,类似(这行不通):staticExTypeTestException(stringmessage)whereExType:Exception{Exceptionex1=newException();ExTypeex=newException(message);returnex;}现在让我感到困惑的是,我们知道由于where子句,泛型类型将成为异常类型。但是,代码会失败,因为我们无法将Exception隐式转换为ExType。我们也不能显

c# - 反射和通用类型

我正在为一个类构造函数编写一些代码,它循环遍历该类的所有属性并调用一个通用静态方法,该方法使用来自外部API的数据填充我的类。所以我把它作为一个示例类:publicclassMyClass{publicstringProperty1{get;set;}publicintProperty2{get;set;}publicboolProperty3{get;set;}publicstaticTDoStuff(stringname){//getthedataforthepropertyfromtheexternalAPI//orifthere'saproblemreturn'default(

c# - 如何将委托(delegate)存储在列表中

如何将委托(delegate)(命名的、匿名的、lambda)存储在通用列表中?基本上我正在尝试构建一个委托(delegate)字典,从中我可以使用键访问存储的委托(delegate)并执行它并按需返回值。可以在C#4中执行吗?有什么想法可以实现吗?注意:异构列表更适合我可以存储任何类型的委托(delegate)的地方。 最佳答案 是否System.Collections.Generic.Dictionary还不够吗? 关于c#-如何将委托(delegate)存储在列表中,我们在Stac

C# Generic List of Multiple Types 泛型列表

这是我的问题的抽象和简化:我有一套玩具和这些玩具对应的盒子。我希望用户能够指定盒子可以容纳的最大类型的玩具:publicclassBox{}然后在Box类中我想要一个通用的玩具列表,但是盒子中包含的每个玩具都有一个通用类型:publicclassBox{publicList=newList();publicboolWhatever;[memberfunctions,constructors...][ThememberfunctionswilldependonT]}Toys类将如下所示:publicclassToywhereT:struct//Tisanytype{publicList=

c# - 如何测试一个空的 generic.dictionary 集合?

如何测试通用字典对象以查看它是否为空?我想按如下方式运行一些代码:while(reportGraphs.MoveNext()){reportGraph=(ReportGraph)reportGraphs.Current.Value;report.ContainsGraphs=true;break;}reportGraph对象的类型是System.Collections.Generic.Dictionary运行此代码时,reportGraphs字典为空,MoveNext()立即抛出NullReferenceException。如果有更高效的方法来处理空集合,我不想在block周围放置tr