Tag: generics

将对象转换为通用列表

我有3个generict类型列表。 List = new List(); List = new List(); List = new List(); 并将其保存在具有类型对象的变量上。 现在我做了Cast back to List来执行foreach,有些像这样: List = (List)obj; 但obj内容每次都在变化,我有一些这样的: List = (List)obj; 我有另一个变量保持当前obj类型: Type t = typeof(obj); 我可以做那样的事吗??: List = (List)obj; Obs:我没有列表中的当前类型,但我需要强制转换,而我现在不再使用另一种forms: List = new List();

使用generics类型的任何优雅方式?

我正在一个小型教育项目中工作,我们必须实现一个n维矩阵。 根据上下文,此矩阵要么使用我们自己的内置ComplexNumber结构,要么使用System.Double ,对于非常简单的示例,使用整数类型(主要是System.Int32 )。 由于应用程序的性质,我们不需要实现闪电般快速的性能。 因此,我的第一个想法是实现一个Matrix ,其中T将以某种方式被限制为“数字” 。 这样做的一个明显问题是,语言中没有办法用定义的运算符约束generics类型T 另外,我没有看到将T为合理类型的简单方法。 我的问题是: 有人可以指点我用一种优雅的方式来进行数学运算,使用generics类型,不会过多地影响性能,并以某种方式使其与内置类型(如果可能)一起工作。 如果Eric读过这篇文章,那么这个function(通过定义的运算符约束generics类型)是否会出现在C#设计会议的假设未来版本中,并且它是否已经接近将其纳入语言? 我知道实现ComplexMatrix类型更简单,更好,并为每个矩阵“子类型”(double,integral等)创建包装器,并支付我们的复杂类型和矩阵元素中任何类型之间转换的性能成本碰巧是。 这个问题更多的是出于对某人如何实施类似场景的好奇心。

使用c#中Type.GetType()返回的类型

我有一个问题,如何使用Type.GetType()返回的类型引用(如果可能的话),例如,创建该类型的IList? 这是示例代码: Type customer = Type.GetType(“myapp.Customer”); IList customerList = new List(); // got an error here =[ 先感谢您 !

在抽象类中使用generics

我正在开发一个抽象类,实现类需要实现一个T列表。问题是这不起作用: public class AbstractClass { public int Id { get; set; } public int Name { get; set; } public abstract List Items { get; set; } } public class Container : AbstractClass { public List Items { get; set; } } 我确信有一个明显的答案,我缺少,我知道我可以构建一个抽象基类型放入列表,但是当我使用我的Linq命令来构建列表时,抽象类型(ItemBase) )与.ToList()方法不能很好地配合。 我正在努力做到这么独特吗?

在PowerShell中调用generics静态方法

如何在Powershell中调用自定义类的通用静态方法? 鉴于以下课程: public class Sample { public static string MyMethod( string anArgument ) { return string.Format( “Generic type is {0} with argument {1}”, typeof(T), anArgument ); } } 这被编译成一个程序集’Classes.dll’并加载到PowerShell中,如下所示: Add-Type -Path “Classes.dll” 调用MyMethod方法最简单的方法是什么?

显式铸造问题

// The Structure of the Container and the items public interface IContainer where TItem : IItem { } public class AContainer : IContainer { } public interface IItem { } public class ItemA : IItem { } // Client app [Test] public void Test () { IContainer container = new AContainer(); } 问题:在测试中发生以下错误。 什么可以成为铸造的解决方案? 无法隐式将“AContainer”类型转换为“IContainer”。 […]

用于.NET 3.5的Lazy 的实现

.NET 4.0有一个很好的实用程序类,名为System.Lazy ,它执行惰性对象初始化。 我想将这个类用于3.5项目。 有一次我在stackoverflow的答案中看到某个实现,但我再也找不到了。 有人有Lazy的替代实现吗? 它不需要框架4.0版本的所有线程安全function。 更新: 答案包含非线程安全和线程安全版本。

反思和generics类型

我正在为类构造函数编写一些代码,它循环遍历类的所有属性,并调用一个通用的静态方法,该方法使用外部API中的数据填充我的类。 所以我把它作为一个示例类: public class MyClass{ public string Property1 { get; set; } public int Property2 { get; set; } public bool Property3 { get; set; } public static T DoStuff(string name){ // get the data for the property from the external API // or if there’s a problem return ‘default(T)’ } } 现在在我的构造函数中我想要这样的东西: public MyClass(){ […]

Console.WriteLine和通用List

我经常发现自己编写这样的代码: List list = new List { 1, 3, 5 }; foreach (int i in list) { Console.Write(“{0}\t”, i.ToString()); } Console.WriteLine(); 更好的是这样的: List list = new List { 1, 3, 5 }; Console.WriteLine(“{0}\t”, list); 我怀疑有一些聪明的方法,但我没有看到它。 有人比第一块有更好的解决方案吗?

如何将此EF Mock设置代码编写为可重用的Generic Boilerplate?

我正在使用moq,ef 6和xunit。 我发现自己一遍又一遍地编写这段代码,并且想到也许我可以把它变成一个通用的方法,但是遇到了一些麻烦。 public static void CreateSalesMock(List sales, Mock dbContextMock) { var data = sales.AsQueryable(); var mockSet = new Mock<DbSet>(); mockSet.As<IQueryable>() .Setup(x => x.Provider) .Returns(data.Provider); mockSet.As<IQueryable>() .Setup(x => x.Expression) .Returns(data.Expression); mockSet.As<IQueryable>() .Setup(x => x.ElementType) .Returns(data.ElementType); mockSet.As<IQueryable>() .Setup(x => x.GetEnumerator()) .Returns(data.GetEnumerator()); dbContextMock.Setup(x => x.Sales).Returns(mockSet.Object); } 现在我在我的数据库中有许多其他表,所以如果我可以编写一个方法来接收该数据的列表并进行设置,那么我可以通过它进行模拟查询会很棒。 public static void CreateMockSet(T dataList, TA model, Func lambda, Mock […]