Tag: generics

在不知道结构的情况下以通用方式读取xml文件/字符串

我想将XML层次结构读入内存中对象的树中。 XML树可以有n级子级。 我不知道确切的数字。 我的内存中对象具有绑定到树控件的children和parent属性。 当我不知道如何完全调用/写入xml元素标记时,如何以通用方式将xml文件/字符串读入我的内存中对象? 例如,某人可以为我提供单位的xml结构,其中每个单位都有许多单位等…所以我知道xml标签是“单位”但它也可能是“模块”或其他任何东西……它必须工作通用但是我不是要求用户输入像“unit”这样的xml元素标记名称。 这有可能实现我想要实现的目标吗?

为什么我不能将List 作为参数传递给接受List 的方法?

以下代码给出了这个错误: 无法从’System.Collections.Generic.List’转换为’System.Collections.Generic.List’。 如何向编译器指示Customer确实从对象inheritance? 或者它只是没有使用generics集合对象inheritance(发送List会得到相同的错误)。 using System.Collections.Generic; using System.Windows; using System.Windows.Documents; namespace TestControl3423 { public partial class Window2 : Window { public Window2() { InitializeComponent(); List customers = Customer.GetCustomers(); FillSmartGrid(customers); //List corporateCustomers = CorporateCustomer.GetCorporateCustomers(); //FillSmartGrid(corporateCustomers); } public void FillSmartGrid(List items) { //do reflection on items and display dynamically } } public class Customer { public string […]

如果object是Generic List

有没有办法确定对象是否是通用列表? 我不会知道列表的类型,我只知道它是一个列表。 我怎样才能确定?

在generics方法中将值转换为T.

我有一个creaky属性映射的接口: interface IPropertyMap { bool Exists(string key); int GetInt(string key); string GetString(string key); //etc.. } 我想创建一个像这样的扩展方法: public static T GetOrDefault(this IPropertyMap map, string key, T defaultValue) { if (!map.Exists(key)) return defaultValue; else { if (typeof(T) == typeof(int)) return (T)map.GetInt(key); //etc.. } } 但编译器不会让我转向T.我尝试添加where T : struct但这似乎没有帮助。 我错过了什么?

如何使用约束将T限制为值类型?

我想限制N可以使用约束可以采用的类型。 我希望将N限制为int或decimal。 public static Chart PopulateInto(List yAxis, List xAxis) where N : int, decimal { // Do stuff here } 任何帮助表示…

获取没有任何generics信息的类型名称

如果我写: var type = typeof(List); Console.WriteLine(type.Name); 它会写: List`1 我希望它只写: 名单 我怎样才能做到这一点? 有没有更聪明的方法来实现它而不必使用Substring或类似的字符串操作函数?

是否在类型之间共享generics类的静态成员

我正在尝试创建一个generics类,它将根据类型具有一些静态函数。 每种类型都有静态成员吗​​? 或者只有在使用通用的地方? 我问的原因是我想要每种类型的锁对象,而不是它们之间共享的对象。 所以,如果我有 class MyClass where T:class { static object LockObj = new object(); static List ObjList = new List(); } 我理解ObjList肯定会为每个使用的generics类型创建一个不同的对象,但LockObj在每个generics实例化( MyClass和MyClass )之间是不同的还是相同的?

generics类中的模糊/冲突构造函数

我有一个通用类: public class BaseFieldValue { public BaseFieldValue() { //… } public BaseFieldValue(string value) { //… } public BaseFieldValue(T value) { //… } } 精细。 除了… var myValue = new BaseFieldValue(“hello”); 哎呀。 调用不需要的构造函数。 有很多方法可以解决这个问题。 什么是最好的解决方案?

generics内存管理

关于如何管理强类型generics的内存,我有疑问 List ints1 = new List(); ints1.Add(1); ints1.Add(2); ints1.Add(3); int[] ints2 = new int[10](); ints2.Add(6); ints2.Add(7); ints2.Add(8); 问题1:我假设ints1初始化为一个新的关键字( new List() )它成为一个引用类型。 值1,2,3在哪里存储在内存中(它们存储在堆栈中还是堆栈中)? 问题2:我知道List和int[]之间的事情, List可以在运行时将其大小扩展到任何大小,这在编译时在int[]中受到限制。 因此,如果值1,2,3存储在堆栈中,如果将新项添加到List说4,它将不会连续到前3右,那么ints1将如何知道内存位置4?

带有“OR”子句的通用表达式树,用于每个提供的属性

我为IQueryable创建了一个通用的搜索扩展方法,使您可以搜索单个属性以查看其中是否包含搜索词。 http://jnye.co/Posts/6/c%23-generic-search-extension-method-for-iqueryable 我现在想让用户选择多个属性在每个属性中进行搜索,如果任何属性包含文本,则匹配。 代码: 用户输入以下代码以执行此搜索: string searchTerm = “Essex”; context.Clubs.Search(searchTerm, club => club.Name, club => club.County) //Note: If possible I would rather something closer to the following syntax… context.Clubs.Search(club => new[]{ club.Name, club.County}, searchTerm); // … or, even better, something similar to this… context.Clubs.Search(club => new { club.Name, club.County}, searchTerm); 这将返回任何名为“Essex”的高尔夫俱乐部或郡。 public static IQueryable Search(this […]