Я определил интерфейс и класс следующим образом:
public interface IXmlKey
{
string Name { get; set; }
string Value { get; set; }
bool HasChildren { get; set; }
}
public interface IXmlKey : IXmlKey where T : IXmlKey
{
public T[] Children { get; set; }
}
и метод:
private static bool ReadSubXmlKeys(XmlReader subReader, IXmlKey objInstance, bool hasChildren, out string error)
{
error = null;
var childrenProp = objInstance.GetType().GetProperties().Single(p => p.Name.Equals("Children"));
var childType = childrenProp.PropertyType.GetElementType();
var childPis = childType.GetProperties();
var generateList = typeof(List).MakeGenericType(childType);
var childrenList = Activator.CreateInstance(generateList);
var childrenListType = childrenList.GetType();
//public static bool Any(this IEnumerable source, Func predicate)
var fun = typeof(Func).MakeGenericType(childType, typeof(bool));
var anyMethod = typeof(Enumerable).GetMethodWithLinq("Any", typeof(IEnumerable), typeof(Func)).MakeGenericMethod(childType);
var startNodeName = objInstance.Name;
do
{
var nodeName = subReader.Name;
//var isExist = anyMethod.Invoke(null, [childrenList, ]); ---> here
}
while (subReader.Read());
return true;
}
Как видите, я не уверен, какой параметр следует вызывать
List.Any(t => t.Name.Equals(nodeName )) where T : IXmlKey
Подробнее здесь: https://stackoverflow.com/questions/788 ... ion-lambda
Размышления C# о том, как вызвать метод статических расширений с параметром выражения лямбда ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Размышления C# о том, как вызвать метод статических расширений с параметром выражения лямбда
Anonymous » » в форуме C# - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-