Tag: generics

现在需要EventArg类,我们有generics

使用generics,是否有理由创建特定的派生EventArg类 现在看起来你可以通过通用实现轻松地使用它们。 我应该去看看我的所有示例并删除我的eventArg类(StringEventArgs,MyFooEventArgs等)。 public class EventArgs : EventArgs { public EventArgs(T value) { m_value = value; } private T m_value; public T Value { get { return m_value; } } }

通用QueryMultiple与Dapper

我有一个基本存储库,其中包含Generic Get方法,可以使用Dapper返回Data public T Get(Func query) { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“myDB”].ConnectionString)) { return query.Invoke(db); } } 但是我现在需要返回多个数据。 DAL查询如下: var multi = db.QueryMultiple(getCarDataSp , new { CustomerID = customerId, Year = year }, commandType: CommandType.StoredProcedure)); var cars = multi.Read(); var options = multi.Read(); //wire the options to the cars foreach(var car in cars){ var […]

Windows窗体通用inheritance

我有这些课程: class Foo : Form where T1, T2 : EventArgs class MiddleGoo : Foo class Goo : MiddleGoo X,Y只是从EventArgs派生的简单类。 我在设计师中看到Goo,但我想在Foo和Goo之间创建一个类Boo,如下所示: class Boo : Foo where T1 : EventArgs class MiddleGoo : Boo class Goo : MiddleGoo 中产阶级的解决方法不起作用,任何想法? 编辑:我的意思是Y和X是像YEventArgs和XEventArgs这样的类,我的问题是当我将Y定义为T2但仍希望通过T1保持通用时,在设计器类Boo中查看。 EDIT2:我刚刚意识到我拼错了Y级的东西…… public class Foo : Form where T1 : EventArgs where T2 : EventArgs { } public […]

通用TryParse扩展方法

代码取自这里 我想听听一些关于这种扩展方法的专家意见。 我打算使用它,但想知道我可能遇到的任何已知问题。 我更喜欢在主要类型上使用TryParse方法吗? public static T? TryParse(this object obj) where T : struct { if (obj == null) return null; T? result = null; TypeConverter converter = TypeDescriptor.GetConverter(typeof(T)); if (converter != null) { try { string str = obj.ToString(); result = (T)converter.ConvertFromString(str); } catch (Exception ex) { throw ex; } } return result; }

‘T’不包含定义

是否有可能做到以下(如果是这样我似乎无法让它工作..暂时放弃约束)… 如果推断出类型(因为它被省略),那么问题是什么? private void GetGenericTableContent(ref StringBuilder outputTableContent, T item) { outputTableContent.Append(“” + item.SpreadsheetLineNumbers + “”); } // ‘item’ is either DuplicateSpreadsheetRowModel class or SpreadsheetRowModel class 使用上面的代码我收到以下错误: ‘T’不包含’SpreadsheetLineNumbers’的定义,并且没有扩展方法’SpreadsheetLineNumbers’可以找到接受类型’T’的第一个参数(你是否缺少using指令或汇编引用?)

在C#中使用Type对象作为generics的类型参数

我找不到在C#3.0 / .NET 3.5的通用构造中使用第一类Type对象(System.Type实例)作为类型参数的方法。 以下是我想要做的简化示例: public void test() { Type someType = getSomeType(); // get some System.Type object MyGeneric obj = new MyGeneric(); // won’t compile } 有没有办法使用someType对象作为generics的类型参数?

C#generics如何影响具有基元的集合

据我了解,C#/ .Netgenerics支持某种程度的具体化。 所以,如果我有以下代码: List list = new List(); list.Add(1); 值1是自动装箱还是’list’对象会有效地处理原始int?

c#generic与类型有细微差别?

注意两个扩展,一个用于float,一个用于Vector3。 注意var(只有一点点差异var(调用。 在c#中,这些可以写成一个通用的吗? 我的问题的实质是: 在一般内容中,你可以分析这种类型的性质吗? public static IEnumerator Tweeng( this float duration, System.Action vary, float aa, float zz ) { float sT = Time.time; float eT = sT + duration; while (Time.time < eT) { float t = (Time.time-sT)/duration; vary( Mathf.SmoothStep(aa,zz, t) ); // slight difference here yield return null; } vary(zz); } public static […]

我怎么知道枚举中的物品?

在这个问题中 ,我在enum与[Flags]属性之间使用xor运算符如下: [Flags] enum QueryFlag { None = 0x1, ByCustomer = 0x2, ByProduct = 0x4, ByDate = 0x8 } QueryFlag flags = QueryFlag.ByCustomer | QueryFlag.ByProduct; 要添加QueryFlag,我们当然应该使用| 运营商。 flags |= QueryFlag.ByDate; 为了删除一个,我对丹涛的回答有不同的看法 。 我正在使用: flags ^= QueryFlag.ByProduct; 他正在使用: flags &= ~QueryFlag.ByProduct; 显然他的回答是正确的,易于理解。 我以为我弄错了。 但经过深思熟虑,我得到了: a,ba^b a&(~b) 0,0 0 0 0,1 1 0 //the difference 1,0 1 […]

将字符串转换为字符串的generics类型

我正在编写一个方法来进行智能类型转换 – 如果类型参数恰好是一个字符串,则使用ToString(),否则转换,但如果转换不起作用则返回null。 基本上可以获得尽可能多的信息,而不会抛出exception。 我在尝试演员之前检查T确实是一个string ,但编译器仍然不是粉丝: Cannot convert type ‘string’ to ‘T’ 这是我的方法: public T? Convert(object v) { if (typeof(T) == typeof(string)) { return (T)v.ToString(); // Cannot convert type ‘string’ to ‘T’ } else try { return (T)v; } catch (InvalidCastException) { return null; } } 如果这是某种不可饶恕的罪,请告诉我。 我用它来处理一些可能有混合类型的数据结构。