Проблема в том, что Type.GetInterfaces () возвращает все интерфейсы, которые реализует класс, включая любые интерфейсы, которые определены / реализованы унаследованными базовыми классами.Я сталкиваюсь с проблемами, когда пытаюсь выяснить только те интерфейсы, на которые класс локально ссылается / реализует (исключая любые интерфейсы, на которые ссылаются / определяют базовый класс).
Я хочу сделать что-то подобноев type.GetProperties () , который может принимать BindingFlags , поэтому следующий код получит все открытые / закрытые свойства, объявленные внутри ссылочного типа (и все свойства, объявленные в базовых классах).исключены).
type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly)
Я пробовал следующее, но это не удается, поскольку ".DeclaringType" всегда равен нулю.
foreach (var implementedInterface in type.GetInterfaces())
{
if (implementedInterface.DeclaringType == type)
{
locallyDefinedInterfaces.Add(implementedInterface);
}
}