Я придумал следующее расширение:
public static class ObjectExtensions
{
public static void SetValue<TValue>(this object @object, string propertyName, TValue value)
{
var property = @object.GetType().GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance);
if (property?.CanWrite == true)
property.SetValue(@object, value, null);
}
}
, которое можно назвать глобально; это работает только в публичных свойствах.
myObject?.SetValue("MyProperty", new SomeObject());
Следующая улучшенная версия работает на что угодно,
public static void SetValue<TObject>(this TObject @object, Action<TObject> assignment)
{
assignment(@object);
}
И также может быть вызвана глобально,
myObject?.SetValue(i => i.MyProperty = new SomeObject());
Но имя расширения несколько вводит в заблуждение, поскольку Action
не требует исключительно назначения.
Я думаю, что Вашим решением является единственный разумный путь. Единственный способ получить список файлов состоит в том, чтобы использовать , File.listFiles () и документация указывает, что это не делает гарантии о порядке файлов возвращенными. Поэтому необходимо записать Компаратор , который использует File.lastModified () , и передайте это, наряду с массивом файлов, к Arrays.sort () .
Вы могли бы также посмотреть апачское свободное городское население IO , это имеет созданный в последний измененный компаратор и много других хороших утилит для работы с файлами.