【问题标题】:C# Specify generic type parameter once and use it throughout classC# 指定一次泛型类型参数并在整个类中使用它
【发布时间】:2022-07-05 23:55:11
【问题描述】:

假设我有一个类ClassWhichDoesThings,它对方法进行各种调用,例如

DoSomething<TheTypeIWantToSpecifyOnce>();
DoAnotherThing<TheTypeIWantToSpecifyOnce>();
AndAnother<TheTypeIWantToSpecifyOnce>();

全班同学。

是否可以在一个地方指定泛型类型(如变量但在运行时未确定),而类之外的任何东西都必须传递泛型类型(避免ClassWhichDoesThings&lt;T&gt;),这样方法调用就变成了某种东西喜欢:

Type WriteTypeOnce = typeof(TheTypeIWantToSpecifyOnce);

DoSomething<WriteTypeOnce>();
DoAnotherThing<WriteTypeOnce>();
AndAnother<WriteTypeOnce>();

这里的目标是,如果我想更改类型,例如,我不必对 20 个不同的方法调用进行查找和替换。

基本上我想要一个泛型类,它私下指定自己的泛型类型。

【问题讨论】:

  • 这是一个非常奇特的要求。为什么不直接将类设为泛型,引用MyClass&lt;T&gt; 有这么大的问题吗?其次,您列出的那些方法是公开的吗?这些方法在做什么?

标签: c# generics


【解决方案1】:

是的,你可以写一个带类型参数的方法

static void DoAllThings<T>()
{
    DoSomething<T>();
    DoAnotherThing<T>();
    AndAnother<T>();   
}

并调用它

DoAllThings<TheTypeIWantToSpecifyOnce>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多