Tag: generics

IEnumerable 的generics方法的重载?

我想要一个generics方法的两个重载: public ReturnType DoStuff(T thing) {…} public ReturnType DoStuff(IEnumerable things) {…} 麻烦当然是IEnumerable本身就是一个匹配第一个签名的类型,所以当我尝试将一个集合传递给这个方法时,它会调用第一个重载。 显然,我可以用不同的方法命名方法以消除歧义。 但是看到方法基本上做同样的事情,我想把它们作为重载。 是否有某种方法在第一个签名中定义T ,以便它不接受IEnumerable作为参数?

C#将通用子类型转换为父类

假设我们有以下类型: class A {} class B : A {} class X {} 为什么我们不能这样做? X var = new X(); 有没有可用的解决方法? [编辑]我试图使用协方差,但它失败了,因为我想访问X中类型为T的属性,C#不允许在接口中使用类型T: interface IX { T sth {set; get;} } class X: IX { T sth { set; get; } } [编辑2]我也尝试了这个但它失败了: class X where T : A { public T sth { set; get; } public […]

如何检索.NET运行时生成的所有已关闭generics类型的列表?

根据MSDN文档,.NET运行时将根据需要动态生成基于generics类型定义的封闭类型。 https://msdn.microsoft.com/en-us/library/f4a6ta2h.aspx 是否可以检索与运行时生成的闭合类型相对应的System.Type实例的集合?

WCF通用字典和了解WCF

好的,我在解决特定问题时遇到了很多困难。 通过服务传输对象。 从概念上讲,它是有道理的……我想? 根据我的阅读,除非已明确定义,否则无法序列化Generic。 所以我想提供我的榜样; 我根本无法上class。 意思是; 我确信还有其他人也遇到了一些困难。 当你提供帮助时,如果你能提供代码; 这将起作用并解释它。 这样我就可以完全理解这个问题。 这对我很有帮助,了解Windows Communication Foundation。 目标是一个客户端应用程序,它只有五个字段; 在其中“发布”到服务器。 名字 姓 电子邮件地址 电话号码 网站地址 这不是太复杂。 这就是我所做的,在我学习WCF的过程中,我尽可能地将其包含在基于SOA的应用程序中。 这样它就可以提供代码的可重用性。 型号/数据合同: #region Using Reference… using System.Runtime.Serialization; using System.Collections.Generic; using System.Threading.Tasks; using System.Text; using System.Linq; using System; #endregion namespace _2Do.Model.Customer { [DataContract(IsReference = true)] public class Person { #region Declared Variable. string […]

具有generics构造函数的generics类?

我有一个通用类。 构造函数需要接受一个参数,该参数是同一个类的另一个实例。 问题是另一个实例可以有不同的generics类型。 看起来C#允许我有一个带有它自己的generics类型的方法,但这似乎不允许构造函数。 public class MyClass { public MyClass(MyClass parent = null) { } // … Additional stuff } 上面的代码告诉我T2未定义。 它不接受它作为方法类型。 一种方法是在我的class级中添加第二种通用​​类型。 但这很尴尬,在很多情况下,参数将为null并且没有类型。 有没有人看到这个简单的方法?

C#generics委托类型推断

为什么C#编译器不能在指定的示例中将T推断为int? void Main() { int a = 0; Parse(“1”, x => a = x); // Compiler error: // Cannot convert expression type ‘int’ to return type ‘T’ } public void Parse(string x, Func setter) { var parsed = …. setter(parsed); }

将genericsienumerable转换为arraylist

我需要将linq查询从genericsienumerable转换为arraylist。 ArrayList myArrayList = new ArrayList(); var b = (from myObj in myCollection select new myClass { Name = myObj.Name, ac = myObj.ac }); 我试过了 b.Cast(); 但它不起作用。 编辑:我使用@devdigital解决方案 但我还想指出,同时我找到了一个hackish解决方案。 myArrayList.InsertRange(0, b.ToArray());

.Net – 什么时候是List .ForEach优先于标准的foreach循环?

通用列表类具有.ForEach(Action action)方法。 现在我已经完成了一些关于它们如何表现的简单时间,似乎通用的ForEach是较差的表演者。 (Snippet Compiler Friendly)代码如下 – public static class timer{ public static long foreachloop = 0; public static long Gforeachloop = 0;} public class something{ public List myStrings = new List(); public something() { for(int i = 1; i<=5000000;i++) { myStrings.Add(i.ToString()); } }} public class cls1{ private static List Strings = new List(); private […]

具有generics返回类型但不是通用输入的方法。 这可能吗?

假设我们有一个NodeData类: public class NodeData { public string Name; public T Value; public NodeData(string name, T value) { this.Name = name; this.Value = value; } } 以及具有NodaData类型的多个属性的基类Node类和子类: public class Node { public List<NodeData> listOutputs() { var fieldInfos = GetType().GetFields(); var list = new List<NodeData>(); foreach (var item in fieldInfos) { Type t = item.FieldType; string name […]

限制generics子类方法在c#中可以接受的类型

如果标题含糊不清或者这是重复,我会道歉。 我今天花了很多钱阅读仿制药,并寻找类似的情况无济于事。 我正在写一个小游戏引擎。 其中一个方面是“单位”携带资源的能力。 有些单位可以携带任何资源,有些单位只能携带某些专门资源。 为此,我有以下结构: Resource基类: public abstract class Resource { private int _count; public int Count { get { return _count; } set { _count = value; } } public Resource(int resourceCount) { _count = resourceCount; } } 然后是Resource专业化Wood : public class Wood : Resource { public Wood(int resourceCount) : base(resourceCount) { } […]