Tag: generics

在MVC中使用SelectListItem创建一个通用存储库DropDown

几个月后我回到了这个问题,我已经在下面添加了我目前的最佳答案。 在最初的问题中,我仍然在寻找一种实现通用DropDown的简单方法,但标题与我当时遇到的具体错误更紧密相关。 我修改了标题以更密切地反映答案。 希望这可能对某人有所帮助。 原始问题: DropDownListFor throws的通用编辑器模板无法转换类型错误 我正在尝试使用从以下post中提取的想法为下拉列表创建通用模板: 将Html DropDownListFor移动到编辑器模板中 我创建了一个DropDownHelper类: public class DDLOptions { public T Value { get; set; } public IEnumerable Items { get; set; } } 我从这里修改了控制器: public ActionResult Create() { var model = new FilmEditViewModel(); FilmDropDownViewModel films = new FilmDropDownViewModel { Items = _repo.GetSelect(), }; model.filmName = films; return View(model); […]

指示generics返回动态类型的对象

这个问题是我原来问题的后续问题。 假设我有以下generics类(简化!^ _ ^): class CasterClass where T : class { public CasterClass() { /* none */ } public T Cast(object obj) { return (obj as T); } } 哪个能够将对象转换为指定的类型。 不幸的是,在编译时,我不知道我将要使用哪种类型,所以我必须通过reflection来实例化这个类,如下所示: Type t = typeof(castedObject); // creating the reflected Caster object object CasterObj = Activator.CreateInstance( typeof(CasterClass).MakeGenericType(t) ); // creating a reflection of the CasterClass’ Cast […]

比较两个列表,其中包含列表

我有class级汽车和class级模型。 Car有许多属性,例如CarId和List 。 模型具有各种属性,如ModelID,Color,Make。 我有一个汽车列表(来自最终用户)呼叫是A然后我有几套汽车列表(来自DB)称之为B。 A有一个Car列表,​​其中B有多个Car列表,​​我想比较这两个包括Models。 我尝试使用Except,但似乎没有用 对不起,不清楚。 假设列表A有项carId = 1和属性Model有两个项1:ModelId = 1, color = black,make = 1999和items 2:ModelId = 3,color = white,make = 2004 列表B有2项carId = 5和Model有两项1:ModelId = 2,color = blue,make = 2000和item 2:ModelId = 3,color = white,make = 2010 carId = 7且Model有两个项目1:ModelId = 5, color = black,make = 1999和items 2:ModelId = 9,color = […]

generics类和generics方法,在下面的示例中将类定义为generics类的原因是什么

这两者之间有什么区别吗? 我定义类型为T的generics类的原因是什么? 如果我只定义方法,那就意味着定义类型T的类。 void Main() { Test1 x = new Test1(); x.Test1Method(1); Test2 x1 = new Test2(); x1.Test2Method(1); } public class Test1 { public void Test1Method(T x) { Console.WriteLine(x); } } public class Test2 { public void Test2Method(T x) { Console.WriteLine(x); } }

C#调用动态通用方法

给出以下接口: interface IEntity { int Id{get;} } interface IPerson : IEntity { string Name{get;} int Age{get;} } interface ITeacher : IPerson { string StaffId{get;} } interface IStudent : IPerson { string StudentId{get;} string Courses{get;} } interface IRepository { T Get(int id) where T : IEntity } 我的命名空间中有以下类 public class EntityBase() : IEntity { int Id{get;set;} […]

创建通用排序方法

我正在学习generics类型,并希望创建一个通用的QuickSort方法,问题是类不是共变量而代码无法编译。 问题是使分区方法通用,我不知道如何做,任何指导将不胜感激。 public static void Swap(ref T a, ref T b) { T temp = a; a = b; b = temp; } public static int Partition(int[] array, int mid) { int midPoint = mid, upperBound = array.Length – 1, lowerBound = 0; while (lowerBound != upperBound) { while (midPoint array[upperBound]) { Swap(ref array[midPoint], ref […]

委托通用类型未知的通用操作。 如何创造这样的东西?

假设我有以下代码。 static class Store { public static TA; public static TB; public static TC; } public static class Store { public static Value A = new Value((v) => Store.A = v); //just an example of what I want public static Value B = new Value((v) => Store.B = v); //just an example of what I […]

处理EF存储过程的多个结果集的通用方法

EF 6,.NET 4.51 我正在尝试构建一个通用的帮助器类,它将帮助我将每个结果集“转换”为类型安全类,如此处所述使用SqlQuery处理存储过程的多个结果 对于我的解决方案,我想将以下内容传递给我的助手类(MultiResultsetsHelper): 通用退货类型 ObjectContext的 DataReader的 按结果集顺序返回的类类型列表 然后让帮助类完成填充的繁重工作1.下面是目前为止的代码: 结果类 public class Set1ReturnDto { public int CruiseCount { get; set; } public string DisplayText { get; set; } public int DisplayValue { get; set; } } public class Set2ReturnDto { public string DepartingFrom { get; set; } public string Port_Code { get; set; } […]

generics代表Parser 字典

我想创建一个解析器,它根据键将字符串标记转换为类型化对象。 我的第一个尝试,从Dictionary 借用不同类型代表的想法:Cleaner,非字符串方法名称? delegate T Parser(string item); public class TableParser { static IDictionary<string, Pair> _PARSERS; static Type DOMAIN_TYPE; static TableParser() { DOMAIN_TYPE= typeof(Domain); Dictionary<string, Pair> parsers = new Dictionary<string, Pair>() { { “PropertyOne”, new Pair( DOMAIN_TYPE.GetProperty(“PropertyOne”), (Parser) double.Parse ) }, }; _PARSERS = parsers; } public List Parse(string filename) { List domains = new List(); […]

从Autofac Builder获取所有AsClosedTypesOf注册变体

让我们假设这些类/接口: public interface ICommand { } public class SomeCommand : ICommand { } public interface ICommandHandler where T : ICommand { void Handle(T arg); } public class SomeCommandHandler : ICommandHandler { void Handle(SomeCommand arg){ /* do something */ } } public interface ICommandBus { void RegisterHandler(T t) where T : ICommandHandler; void RegisterHandlerByParam(ICommandHandler t2) where […]