Tag: generics

Generic Linq to Entitiesfilter方法,它接受要过滤的过滤条件和属性

我已经在SO中查看了许多通用的linq过滤问题及其答案,但它们都没有满足我的需求,所以我想我应该创建一个问题。 我已经创建了许多我称之为“filter提供程序”的类,一个用于我的模型中的每个实体类,以便为我的应用程序提供简单的搜索。 我不想进入像Lucene.Net这样的更高级的解决方案,因为具有匹配分数的基本过滤就足够了。 在这些提供者类的每个提供者类中,有多种方法将接收过滤术语和查询特定属性,并根据属性的相关性返回每个匹配的分数。 大多数方法会一次过滤多个属性,但不是全部。 以下是其中两种方法: private IQueryable MatchHighRelevanceFields(string searchTerm, IQueryable retailers) { var results = retailers.Where(r => (r.CompanyName != null && r.CompanyName.ToUpper().Contains(searchTerm)) || (r.TradingName != null && r.TradingName.ToUpper().Contains(searchTerm)) ); return results; } private IQueryable MatchMediumRelevanceFields(string searchTerm, IQueryable retailers) { var results = retailers.Where(r => (r.Address.Street != null && r.Address.Street.ToUpper().Contains(searchTerm)) || (r.Address.Complement != null && […]

C#generics:如果T是返回类型,它也可以是无效的吗? 如何将这些接口组合在一起?

我有以下接口,使用回调返回类型T的generics参数… public interface IDoWork { T DoWork(); } 但是我也有以下接口,但它不会调用回调,因为它返回void。 public interface IDoWork { void DoWork(); } 我可以组合这两个接口并使用运行时逻辑来确定差异吗? 我怎样才能做到这一点?

Type.IsGenericTypeDefinition和Type.ContainsGenericParameters之间的区别

System.Type类型包含属性IsGenericTypeDefinition和ContainsGenericParameters 。 阅读完MSDN文档后,我得出结论,两个属性都存在,以检查类型是开放类型还是封闭类型。 但是,我没有看到两者之间的区别,以及何时想要使用另一个。

从’System.Collections.Generic.List ‘到’T’没有隐式引用转换

class Class1 { public virtual void Update(T entity) { Update(new List() { entity }); //It’s failed } public virtual void Update(IEnumerable entities) { } public virtual void Update(TSub entity) where TSub : T { } public virtual void Update(IEnumerable entities) where TSub : T { } } 我有一段代码。 但它总是失败。 如果我用Update(new List() { entity })替换了Update(new List() […]

直接从字典获取KeyValuePair

我有System.Collections.Generic.Dictionary dict ,其中A和B是类,实例A a (其中dict.ContainsKey(a)为真)。 是否有可能直接从Dictionary中获取KeyValuePair? 或者我是否需要创建一个新的KeyValuePair: new KeyValuePair(a, dict[a]) ?

无法将类型’T’隐式转换为’Int’

当我试图在我的代码中调用此函数时,我得到标题中的错误。 运算符’+ =’也不能应用于’int’和’T’类型的操作数 public int Change(Stats type, T value) { Dictionary temp = new Dictionary(); temp = sql.Query(string.Format(“SELECT {0} FROM player WHERE fbId='{1}'”, type.ToString(), FBId)); if (typeof(T) == typeof(int)) { int t = Convert.ToInt16(temp[type.ToString()]); t += value; if (t < 0) return -1; PlayerStats[type] = t; } sql.Upload(string.Format("UPDATE player SET {0}='{1}' WHERE fbId='{2}'", type.ToString(), PlayerStats[type], […]

选择哪种C#方法重载?

为什么两个重载都匹配时调用generics方法? public static void method1(object obj) { Console.WriteLine(“Object”); } public static void method1(T t) { Console.WriteLine(“Type T”); } public static void Main(String args[]) { method1(“xyz”); //Will print “Type T”; } 这里不应该有任何冲突,对吧?

将结构体转换为通用接口时是否存在Boxing / Unboxing?

可能重复: 结构,接口和拳击 来自MSDN: http : //msdn.microsoft.com/en-us/library/yz2be5wk.aspx Boxing是将值类型转换为类型对象或由此值类型实现的任何接口类型的过程。 但是通用接口呢? 例如, int派生自IComparable和IComparable 。 假设我有以下代码: void foo(IComparable value) { /* etc. */ } void bar(IComparable value) { /* etc. */ } void gizmo() { int i = 42; bar(i); // is `i` boxed? I’d say YES foo(i); // is `i` boxed? I fear it is (but I hope […]

C#generics约束

是否可以枚举通用约束中“可用”的类型? T MyMethod() where T : int, double, string 为什么我要这样做是因为我有一个小的评估引擎,并且想编写这样的代码: bool expression.Evaluate(); 要么 int expression.Evaluate(); 但我想禁止 MyCustomClass expression.Evalaute();

WinRT禁止自定义generics类型或接口的原因

在阅读了WinRT以及Build Decks之后,有人能够了解导致他们不允许我们通过我们自己的IFoo 的具体原因,但他们是否为他们自己认可的通用接口类型做了什么? WinRT必须有一个用于描述,解析和传递generics参数的机制,或者为了自己的用途而使用它的一些幻想。 我无法想象以非generics方式“扁平化”我的一些C#类实用程序库,我主要想要使用C ++而不是JS。 我想要一流的Intellisense和API支持,就像你自己的MS类型一样。 那么……为什么我们也不能使用这种机制呢? 这可能是放宽和稍后允许的,还是永久限制? 或者这是由于语言投影层本身自定义处理特定的generics类型而没有任何generics类型共有的WinRT集中式元处理? 谢谢。