我对 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/