c# - 泛型方法从父类(super class)获取参数类型

标签 c# generics inheritance this

我对 C# 中的类型化方法有疑问。 我想调用对象的继承方法。 此方法以“this”作为参数调用静态方法。 静态方法的参数是通用的。 我现在希望此参数的泛型类型成为第一个对象的类型。 但是参数总是抽象类的类型。

例子如下:

abstract class AbstractClass
{
    bool update()
    {
        Connection.Update(this);
    }
}

class Entity : AbstractClass
{
}

class Connection
{
    public static void Update<T>(T obj)
    {
        someMethod<T>()
    }
}

如果我尝试这样做:

Entity foo = new Entity();
foo.update();

Connection.Update 将在调试器中看起来像这样:

public static void Update<AbstractClass>(AbstractClass obj)
{
    someMethod<AbstractClass>()
}

但我想要这个:

public static void Update<Entity>(Entity obj)
{
    someMethod<Entity>()
}

有没有可能像这样

someMethod<typeof(obj)>()

或者其他什么来解决我的问题?

最佳答案

您可以将基类声明为通用类,示例如下:

abstract class AbstractClass<T>
{
    bool update()
    {
        Connection.Update<T>(this as T);
    }
}

class Entity : AbstractClass<Entity>
{
}

class Connection
{
    public static void Update<T>(T obj)
    {
        someMethod<T>()
    }
}

关于c# - 泛型方法从父类(super class)获取参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21481328/

相关文章:

c# - 如何对数组中的奇数进行升序排序?

java - 如何保存不同类型的藏品?

c++ - 为什么这种继承失败(使用父类(super class)的方法)C++

c++ - 如何使一个函数的返回类型与另一个函数的返回类型相同?

c# - Oracle Sequence nextval 是来回跳数

java - 将 Java UUID 对象转换为 .NET GUID 字符串

generics - 将泛型写入文件

c++ - 解决循环依赖

c# - 计算文本文件中的行数

Java 多重边界