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

c# – 派生类型和泛型【代码】

我有一个使用泛型的类型.我们称之为FlowerDescriptor< T>一些花用数字描述,另一些用绳子等描述. 所以FlowerDescriptor< int&gt ;; FlowerDescriptor&LT串取代;等等我想要一个机制(可能是扩展方法)做两件事>看看是否是FlowerDescriptor和>看看描述符是什么. 即 > FlowerDescriptor< string> .GetType().IsFlowerDescriptor == truestring.GetType().IsFlowerDescriptor == false. 同样地,我可能从FlowerDescriptor< int>得到. ie cl...

c# – 返回泛型类型的通用方法【代码】

我正在使用一个接受类型的restclient,后来转换为正确的IRestResponse.IRestResponse<MyClassA> response = client.Execute<MyClassA>();由于MyClassA也可以是MyClassB或MyClassC,我想过制作一个可以处理这个问题的通用方法.但没有任何运气.这是我的尝试: 公共接口IRestClient {IRestResponse响应= PerformExecuteClient()private RestResponse<T> PerformExecuteClient<T>() {return client.Execute<T>(); }编译器告诉我client.Ex...

c# – 继承指定的泛型类型【代码】

我不认为我想要的是可能的,但我希望有人可以验证这一点,也许可以解释为什么它是不可能的. 我们有Bar< T>的继承,我们无法触及Bar< T>的源代码.abstract class Foo<T> : Bar<T>我们提供Foo< T>由第三方实施,我们也想要规定任何类继承自Foo< T>是T的指定类型.当然,这可以由第三方手动完成class Fizz : Foo<Fizz>但是,我发现重复的Fizz既麻烦又丑陋.Foo< T>是否可能?自动使用Fizz作为T的指定类型?换句话说,是否可以让Foo< T>.沿着这些...

使用C#泛型扩展?【代码】

我想创建一个可扩展的嵌套结构,看起来我应该能够使用泛型来做到这一点,尽管我可能没有“正确地”使用它们. 我希望能够从GroupType和/或OptionType创建子类.问题是我无法对泛型类型执行新操作,即使我指定它们只能是某种基类型. 有没有办法做我想做的事情?public class AllInfo<GroupType, OptionType> where GroupType: GroupBase<OptionType>where OptionType: OptionBase {public List<string> Names { set; get; }public List<G...

c# – 对继承的泛型类型的反思【代码】

我在c#中遇到了反射问题,但我找不到答案. 我有一个继承自泛型类的类,我试图从这个类中检索T的类型,但事实证明我不能! 这是一个例子:class Products : List<Product> {}问题是在运行时我不知道T的类型.所以我试着得到这样的类型:Type itemsType = destObject.GetType().GetGenericArguments()[0]它没有成功. 这是我的方法:public static object Deserialize(Type destType, XmlNode xmlNode){ object destObject = Acti...

c# – 使用泛型类型参数时模糊方法重载【代码】

考虑以下程序:using System; using System.Threading.Tasks;public class Program {public static void Main(){var stringTask = Task.FromResult("sample");stringTask.TeeAsync(st => Task.CompletedTask).Wait();} }public static class FunctionalExtensions {public static async Task<T> TeeAsync<T>(this T source, Func<T, Task> asyncAction){ await Task.Delay(0); // todo: do something with sourcereturn sour...

c# – `typeof`运算符如何在泛型方法中获取类型参数?【代码】

在Java中,此代码不起作用:public <T> void foo() { print(T.class); } // compile time error因为通用类型T在运行时被删除.要使用T,我必须将它用作参数,这会将String.class推入堆栈public <T> void foo(Class<T> T) { print(T); } public void bar() { foo(String.class); }但在C#中,我可以在运行时获取类型参数:public void Foo<T>() { print(typeof(T)); }它是如何工作的?编译器(或vm)是否自动将void Foo< T>()转换为void Foo...

c# – 泛型显式转换【代码】

我实现了从字符串到对象的显式转换,称为Foo. 所以=> Foo f =(Foo)“foo data”;作品 我需要实现一个将字符串强制转换为泛型T的函数,在这种情况下,T是Foo数据类型.public T Get<T>(object o){// this always return falseif (typeof(T).IsAssignableFrom(typeof(String))){// when i by pass the if above this throws invalid cast exceptionreturn (T)(object)str;}return null; }// When I call this, it generated an error //...

c# – 使用泛型创建可重用方法【代码】

我不确定问题的标题,但这里是: – 我有我的代码: – HttpClient client = new HttpClient();// Create a HttpClient client.BaseAddress = new Uri("http://localhost:8081/api/Animals");//Set the Base Address//eg:- methodToInvoke='GetAmimals' //e.g:- input='Animal' class HttpResponseMessage response = client.GetAsync('GetAllAnimals').Result; // Blocking call!if (response.IsSuccessStatusCode) {XmlSerializ...

c# – 在泛型方法中仅设置第二个参数类型【代码】

我必须创建一个方法,用于从具有指定类型的集合中选择firts属性. 我已经创建了这样的方法(为了简洁,我删除了一些部分):public static IQueryable<TResult> SelectFirstPropertyWithType<T, TResult>(this IQueryable<T> source) {// Get the first property which has the TResult typevar propertyName = typeof(T).GetProperties().Where(x => x.PropertyType == typeof(TResult)).Select(x => x.Name).FirstOrDefault();var par...

C#泛型 – 从泛型类调用泛型方法【代码】

我有以下类,我试图从ExportFileBaseBL类调用Compare方法,但我得到错误 无法将类型’Class1’隐式转换为’T’.存在显式转换(您是否错过了演员?)public abstract class Class1<T> where T: Class2 {public abstract Class1<T> Compare(Class1<T> otherObj); }public abstract class Class3<T, U> where T: Class1<U>where U: Class2 {public T Compare(T obj1, T obj2){if (obj1.Prop1 > obj2.Prop1){return obj1.Compare(obj2); //...

c# – IEnumerable泛型的扩展【代码】

我有两个IEnumerable扩展:public static class IEnumerableGenericExtensions {public static IEnumerable<IEnumerable<T>> InSetsOf<T>(this IEnumerable<T> source, int max){List<T> toReturn = new List<T>(max);foreach (var item in source){toReturn.Add(item);if (toReturn.Count == max){yield return toReturn;toReturn = new List<T>(max);}}if (toReturn.Any()){yield return toReturn;}}public static int IndexOf<T...

c# – 如何强制转向泛型【代码】

鉴于以下代码:class Animal { }class Dog : Animal { }class Cage<T> {private T animal;public Cage(T animal){this.animal = animal;}public T Animal{ get { return animal;} } }class Program {static void Main(string[] args){Dog dog = new Dog();Cage<Animal> animalCage = new Cage<Animal>(dog);Cage<Dog> dogCage = (Cage<Dog>)animalCage;} }如何解决最后一个编译器错误(从animalCage转换为dogCage)? 在我的代码中我...

c# – ViewModelBuilder泛型投射问题【代码】

参见英文答案 > C#: cast to generic interface with base type 3个围绕着这个我的大脑无济于事,想知道是否有人可以提供帮助? 得到一个非常令人沮丧的演员问题,我肯定会有一个快速回答,但可能只是由于我对泛型类型推断或其他东西的有限理解而发生. 提前致谢! 场景是一个向导站点的“步骤”ViewModel.我正在为每个人创建Builder类,并使用工厂来获取特定的构建器,以获取返回给我的步骤,这是一个...

获取作为基类传递的派生C#类的属性到泛型方法【代码】

我试图确定派生类的属性值,当它通过基类参数传递给方法时. 例如,下面是完整的代码示例:class Program {static void Main(string[] args){DerivedClass DC = new DerivedClass();ProcessMessage(DC);}private static void ProcessMessage(BaseClass baseClass){Console.WriteLine(GetTargetSystemFromAttribute(baseClass));Console.ReadLine();}private static string GetTargetSystemFromAttribute<T>(T msg){TargetSystemAttrib...