C# вызывает универсальный метод из абстрактного класса, передавая тип наследованияC#

Место общения программистов C#
Anonymous
C# вызывает универсальный метод из абстрактного класса, передавая тип наследования

Сообщение Anonymous »

Я собираюсь лучше объяснить, что я имею в виду.
Я думаю, что то, чего я желаю, невозможно, однако я попробую.
У меня есть статический класс, у которого есть этот метод:

Код: Выделить всё

public static class BaseTypeID
{
static ulong _id = 1;

public static ulong NextID => _id++;
}

public static class TypeID where T : class
{
public static readonly ulong ID = 0;

static TypeID()
{
ID = BaseTypeID.NextID;
}
}

public static class Register
{
public static void PrintType(T passedVar) where T : AbstractType
{
Console.WriteLine(TypeID.ID);
}
}
У меня есть абстрактный класс, вызывающий этот метод:

Код: Выделить всё

public abstract class AbstractType
{
public void UseStaticMethod() => Register.PrintType(this);
}
И класс наследования:

Код: Выделить всё

public class InheritingType : AbstractClass { }
На самом деле, если я это сделаю:

Код: Выделить всё

InheritingType myVar = new InheritingType();
myVar.UseStaticMethod();
он ​​печатает идентификатор AbstractClass вместо идентификатора InheritingType. Есть ли способ вызвать идентификатор InheritingType без написания метода переопределения?
Большое спасибо

Подробнее здесь: https://stackoverflow.com/questions/791 ... iting-type

Вернуться в «C#»