Я использую отражение, чтобы получить все свои типы модификаторов из сборки, и помещаю их в словарь.
Я хочу посмотреть, какой контент получает модификатор.Каждый NodeContent имеет интерфейсы, чтобы сопоставить их с модификатором.Каждый модификатор имеет абстрактное свойство GetContentType, которое возвращает тип интерфейса, чтобы показать, какой контент он может взять.
Но это вынуждает меня создать объект типа для использования PropertyInfo.GetValue (), который бросает вызов тому, что япытаясь сделать, потому что я не знаю, какой тип контента он принимает.
Полагаю, я мог бы просто получить первый конструктор и первый параметр, но для меня это не очень безопасно.
Так что мой вопрос.Есть ли другой способ получить PropertyInfo.GetValue (), не используя объект, а просто тип?
public static Dictionary<string, Type> GetFittingModifiers(NodeContent content)
{
Dictionary<string, Type> fits = new Dictionary<string, Type>();
foreach(KeyValuePair<string,Type> modifierType in modifiers)
{
PropertyInfo propertyInfo = modifierType.Value.GetProperty("GetContentType");
Modifier modifier = //make object of modifierType.Value without knowing what the constructor takes
Type contentType = (Type)propertyInfo.GetValue(modifier, null);
if (HasInterface(content, contentType))
fits.Add(modifierType.Key, modifierType.Value);
}
return fits;
}