Вы можете преобразовать свой метод в общий, например,
public class MyAttribute : Attribute
{
public void SomeMethod<T>() where T : ISomeInterface, new()
{
var expectedType = new T();
// Do something with expectedType
}
}
Ограничение типа new()
означает, что тип должен иметь открытый конструктор без параметров, что означает, что вы можете сделать new T()
. Это устраняет необходимость использования Activator
.
Обратите внимание, что, как указывает Дункан Хоу, универсальный тип не может наследоваться от Attribute
, поэтому вы не можете сделать public class MyAttribute<T> : Attribute