Вы можете сделать это с помощью отражения. Сначала получите фактический тип:
var type = typeof(SomeGenericClass<>).MakeGenericType(theTypeArgument);
Теперь вы можете вызвать GetField
для этого типа, чтобы получить поле:
var field = type.GetField("_someField");
Далее установите значение. Обратите внимание, что первый параметр, переданный SetValue
, равен null
, потому что поле static
:
field.SetValue(null, value);
Наконец, заверните это в цикл, например ::1014*
foreach(var t in types)
{
var type = typeof(SomeGenericClass<>).MakeGenericType(t);
var field = type.GetField("_someField");
field.SetValue(null, value);
}
Конечно, вы также должны добавить некоторые проверки, чтобы избежать NullReferenceException
.