【C#---泛型】教程文章相关的互联网学习教程文章

c# – 类型不能在泛型类型或方法’BaseController’中用作类型参数’T’.没有隐含的参考【代码】

我正在尝试创建一个通用来简化我的代码(它是一个web api项目),但不知何故它最终变得比我预期的更复杂.我想要实现的是这样的: 为了简化我的整个实际代码,这就是我写的:public interface IDatabaseTable { }public class ReceiptIndex: IDatabaseTable { }public interface IBackend<T> where T: IDatabaseTable { }public class Receipts : IBackend<ReceiptIndex> { }public class Generic<T> : SyncTwoWayXI, IBackend<T> where...

c# – 泛型类型的约束不能在IEnumerable中使用?【代码】

可能有一个问题,但我无法提出搜索条件来找到答案.. 我可能在这里遗漏了一些明显的东西,但为什么我不允许这样做,这给出了错误:“Argument 1: cannot convert from System.Collections.Generic.IEnumerable<TType> to System.Collections.Generic.IEnumerable< Test.A>” 同时打电话给DoSomething?public interface A {void Foo(); }public class B : A {public void Foo(){} }class Test<TType> where TType : A {public Test(IEn...

c#获取此类用于泛型使用【代码】

我有一个其他类扩展的DbContext类.例如:class Contact extends DbContext {}在DbContext类中,我想使用泛型中扩展DbContext的任何类:public static IEnumerable<DBContext> GetAll( ){var sql = "SELECT * FROM " + TableName();return DB().Fetch<DBContext> (sql);}注意IEnumerable<的DbContext&GT这里.上面的代码很好,但我必须每次都进行类型转换.我可以实现像这样的东西: public static IEnumerable<thisClass> GetAll( ) {v...

c# – 获取方法的MethodInfo – 此操作仅对泛型类型有效【代码】

我有以下两个Entity Framework的Include方法:public static IIncludableQueryable<TEntity, TProperty> Include<TEntity, TProperty>([NotNullAttribute] this IQueryable<TEntity> source, [NotNullAttribute] Expression<Func<TEntity, TProperty>> navigationPropertyPath) where TEntity : class;public static IQueryable<TEntity> Include<TEntity>([NotNullAttribute] this IQueryable<TEntity> source,[NotNullAttribute]...

在C#中创建泛型表达式生成方法【代码】

我正在使用几种方法构建一个IQueryable查询.这些方法有些复杂,但我想解决的问题可以如下提取和简化.我有两种方法private Expression<Func<T, bool>> CreateExpressionA(string ValueA) {return a => a.PropertyA.ToLower() == ValueA; }private Expression<Func<T, bool>> CreateExpressionB(string ValueB) {return a => a.PropertyB.ToLower() == ValueB; }而我宁愿拥有的是:private Expression<Func<T, bool>> CreateExpressio...

c# – 你能限制泛型中的Type类型吗?【代码】

我有一个字典,其中键和值都是Type类型,就像这样……private static Dictionary<Type, Type> myDict;我要做的是将第二个Type限制为仅继承自FrameworkElement的类型. 注意我不是在讲故事FrameworkElement实例,我试图只存储从FrameworkElement派生的Type类型的对象,使得以下语句为true …var isTypeStorable = typeof(FrameworkElement).IsAssignableFrom(FooType);那可以做到吗? 顺便说一句,是的,我知道我可以在添加到字典之前使用上...

c# – 重载,泛型和类型约束:方法解析【代码】

请考虑以下代码段,其中包含泛型和重载函数:using System;namespace Test_Project {public interface Interface{void f();}public class U : Interface{public void f() {}}public class Class<T> where T: Interface{public static void OverloadedFunction(T a){Console.WriteLine("T");a.f();}public static void OverloadedFunction(U a){Console.WriteLine("U");a.f();}}class Program{public static void Invoke(U instance)...

c# – 泛型构造要求类型’Cell <'T>'是非托管类型【代码】

为什么我不能在F#中使用通用的非托管结构?可能是Cell<T当T:unmanaged>是不是没有管理,那我怎么能解决这个问题?type FloatCell =structval x: floatval y: nativeptr<FloatCell>end[<Struct>] [<StructLayout(LayoutKind.Sequential)>] type Cell<'T when 'T: unmanaged> =structval x: 'Tval y: nativeptr<Cell<'T>>end 给error FS0001: A generic construct requires that the type ‘Cell<‘T>’ is an unmanaged type [E:\...

c# – Autofixture.Automoq – 泛型使bool始终如一【代码】

public interface IResult {bool Success { get; } }public interface IResult<T> : IResult {}使用AutoFixure和AutoMoq无论T是什么类型,我都试图找到使成功始终为真的方法.使用IResult注册假是很容易的,但这似乎不适用于IResult< T>解决方法:使用假实现public class FakeResult<T> : IResult<T> {public bool Success {get { return true; }} }以及添加TypeRelay自定义fixture.Customizations.Add(new TypeRelay(typeof(IResult<...

c# – 限制泛型函数仅适用于枚举【代码】

参见英文答案 > Anyone know a good workaround for the lack of an enum generic constraint? 12个> Interesting “params of ref” feature, any workarounds? 4个我有以下通用功能:public SomeType SomeFunction<T>(T value) { }我现在想限制这个通用函数只适用于Enums,所以我尝试了以下内容:public SomeType SomeFunction<T>(T value) wh...

C#泛型和类型【代码】

我有一个通用的方法,如:public abstract T method<T>(int arg) where T : class, new();然后我在子类中实现它public MyType method<MyType>(int arg){MyType e = new MyType();e.doStuff (arg); // ERROR HEREreturn s; }但我无法访问MyType的成员……为什么?我可以添加一些东西来启用它们吗? 谢谢 Miloud解决方法:你可以这样做(注意我已经移动了一些你的通用参数和约束).public class MyType {public void doStuff(int i){} } ...

使用C#泛型和方法重载的问题【代码】

我试图基于泛型类型调用重载方法.我一直在用C做这个没有任何痛苦.但我真的不明白为什么我不能在C#中使用泛型来做这件事.任何人都可以帮助我如何在C#中使用泛型来实现这一点?class Test<T> {public T Val;public void Do(T val){Val = val;MainClass.Print(Val);} }class MainClass {public static void Print(UInt16 val){Console.WriteLine("UInt16: " + val.ToString());}public static void Print(UInt32 val){Console.WriteLi...

c# – 将泛型类转换为接口【代码】

将通用类转换为它正在实现的接口时遇到问题. 我的代码是这样的:interface foo {void foobar(); }class bar: foo {public void foobar(){throw new NotImplementedException();} }现在我的工厂通过界面创建我的类的实例,主要是一个简单的微内核(服务定位器).我会在这里简化它.通常它会从配置中查找实现类,而工厂将类型视为T,但这与我遇到的问题无关.public static class Factory {public static Lazy<foo> CreateLazyInstance(){La...

c# – 如何使用约束实现泛型方法【代码】

从我的头衔中可能有点难以理解我想要达到的目标,所以我会进一步了解细节. 我有以下界面:public interface IModelBuilder<T>where T : IStandardTemplateTemplate {M Build<M>(T pTemplate, params object[] pParams) where M : BaseModel; }现在我想在我的实际构建器中实现该接口.我用来映射不同对象类型的构建器.所以这看起来如下:public class BusinessModelBuilder : IModelBuilder<IBusinessTemplate> {public virtual M Bui...

c# – 可以将泛型类型约束到枚举?【代码】

参见英文答案 > Create Generic method constraining T to an Enum 20个我有一个通用类Foo< T>我想把T限制为枚举类型.这可能在C#中吗? 我试过了public class Foo<T> where T : enum // COMPILATION ERROR但这种方法似乎只适用于类和结构. 同样,尝试将T约束到基础枚举类型也不起作用:public class Foo<T> where T : int // COMPILATION ERROR因为int不是类或接口. 编辑我现在意识到之前已...