草庐IT

泛型库

全部标签

c# - 检查对象是否为 C# 中的非特定泛型类型

假设我有以下类(class):publicclassGeneral{}我想知道一个对象是否属于那种类型。我知道我可以使用反射来确定对象是否属于Type.GetGenericTypeDefinition的泛型类型,但我想避免这种情况。是否可以做类似objisGeneral的事情?,或obj.GetType().IsAssignableFrom(typeof(General))?我很惊讶我找不到类似的问题,尽管我可能在搜索中使用了错误的关键字。 最佳答案 你可以这样做:varobj=newGeneral();vartype=obj.Ge

c# - 无法使用动态参数和泛型调用扩展方法

我很好奇是否有其他人遇到过同样的问题...我在一个项目的ORM上使用Dapper,并从IDbConnection创建了一些我自己的扩展方法。为了简化代码,我遇到了(我发现的)令人费解的错误。我将详细介绍我所经历的过程。首先,我在一个名为DbExtensions的静态类中向我的项目添加了一个扩展方法。像这样:usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Linq;publicstaticclassDbExtensions{publicstaticTScalar(thisIDbConnectioncnn,strin

C# Generic 泛型(一个严肃的问题)

在C#中,我尝试编写代码,在其中创建一个本身是通用的Func委托(delegate)。例如,以下(非通用)委托(delegate)返回任意字符串:FuncgetString=()=>"Hello!";另一方面,我想创建一个与泛型方法类似的泛型。例如,如果我希望泛型Func为类型T返回default(T)。我会想象我编写的代码如下:FuncgetDefaultObject=()=>default(T);然后我会用它作为getDefaultObject()这将返回null如果我要写getDefaultObject()将返回0。这个问题不仅仅是一个学术练习。我找到了很多可以使用它的地方,但我

c# - 如何编写嵌套泛型函数

我正在尝试编写一个通用的堆排序算法。我收到以下错误。可能是什么原因?ThetypeTcannotbeusedastypeparameterTinthegenerictypeormethodHeap.MainClass.MaxHeapify(T[],int,int).ThereisnoboxingortypeparameterconversionfromTtoSystem.IComparable(CS0314)(HeapSort) 最佳答案 您需要指定T必须实现的相同通用约束IComparable在HeapSort上功能以及:priv

C# 泛型方法解析失败,出现不明确的调用错误

假设我定义了两个不相关的类型和两个具有相同签名但类型过滤器不同的扩展方法:publicclassFoo{}publicclassBar{}publicstaticclassFooExtensions{publicstaticTFooFrob(thisTFoofoo)whereTFoo:Foo{}publicstaticTFooBrob(thisTFoofoo)whereTFoo:Foo{}}publicstaticclassBarExtensions{publicstaticTBarFrob(thisTBarbar)whereTBar:Bar{}}然后当我写newFoo().Frob(

c# - 强类型数据绑定(bind)和泛型?

假设我想使用新的ASP.NET4.5强类型数据绑定(bind)将泛型类型(此处:Dictionary)绑定(bind)到Repeater。那我就得放下KeyValuePair作为Repeater的ItemType属性。">这里有一个明显的问题:我不能使用或>在ItemType文本中!人们会怎么做呢?是否可以通过新的数据绑定(bind)模型以某种方式使用泛型? 最佳答案 这对我有用:代码隐藏protectedvoidPage_Load(objectsender,EventArgse){rpCategories.DataSource=n

c# - 创建用于访问泛型类型属性的表达式树

我需要编写一个泛型方法,它接受泛型类型的实例和字符串格式的属性名称,并返回一个表达式树我需要转换一个简单的lambda表达式a=>a.SomePropertyName其中a是泛型类型,它将具有名为SomePropertyName的属性我知道我们可以使用下面的反射代码获取属性信息System.Reflection.PropertyInfopropInfo=a.GetType().GetProperty("SomePropertyName");这可能很简单,但我对表达式树不是很熟悉,如果有类似的问题,请链接并关闭 最佳答案 假设事先不知

c# - 如何检查泛型参数在 .NET 4.0 中是否是动态的

我有一个类ObjectMapper..NET4.0中有什么方法可以判断typeof(T)是否存在?是dynamic?我希望能够在成员方法内部确定该类是否已初始化为newObjectMapper()与newObjectMapper(). 最佳答案 没有名为dynamic的CLR类型。C#编译器生成类型为object的所有动态值,然后调用自定义绑定(bind)代码来确定如何处理它们。如果使用了dynamic,它将显示为Object。 关于c#-如何检查泛型参数在.NET4.0中是否是动态的,

C#:转换为具有基类型的泛型接口(interface)

代码如下:publicinterfaceIValidator{boolIsValid(Tobj);}publicclassOrderValidator:IValidator{//...}publicclassBaseEntity{}publicclassOrder:BaseEntity{}问题是我做不到:varvalidator=newOrderValidator();//thislinethrowsbecausetypecan'tbeconvertedvarbaseValidator=(IValidator)validator;//allthisisbecauseIneedalist

C#构造函数泛型参数推断

这个问题在这里已经有了答案:Whydoesn'tC#supportimpliedgenerictypesonclassconstructors?(3个答案)关闭9年前。为什么C#为方法推断泛型参数而不为构造函数推断泛型参数?newTuple(5,5)与Tuple.Create(5,5)