Я, может быть, ваааааааа, или действительно близко. В любом случае, я в настоящее время SOL. :)
Я хочу иметь возможность использовать метод расширения для установки свойств класса, но этот класс может (или не может) обновляться в потоке, не являющемся пользовательским интерфейсом, и является производным от класса, для которого принудительное обновление должно быть Поток пользовательского интерфейса (который реализует INotifyPropertyChanged и т. Д.).
У меня есть класс, определенный примерно так:
public class ClassToUpdate : UIObservableItem
{
private readonly Dispatcher mDispatcher = Dispatcher.CurrentDispatcher;
private Boolean mPropertyToUpdate = false;
public ClassToUpdate() : base()
{
}
public Dispatcher Dispatcher
{
get { return mDispatcher; }
}
public Boolean PropertyToUpdate
{
get { return mPropertyToUpdate; }
set { SetValue("PropertyToUpdate", ref mPropertyToUpdate, value; }
}
}
У меня есть класс метода расширения, определенный примерно так:
static class ExtensionMethods
{
public static IEnumerable<T> SetMyProperty<T>(this IEnumerable<T> sourceList,
Boolean newValue)
{
ClassToUpdate firstClass = sourceList.FirstOrDefault() as ClassToUpdate;
if (firstClass.Dispatcher.Thread.ManagedThreadId !=
System.Threading.Thread.CurrentThread.ManagedThreadId)
{
// WHAT GOES HERE?
}
else
{
foreach (var classToUpdate in sourceList)
{
(classToUpdate as ClassToUpdate ).PropertyToUpdate = newValue;
yield return classToUpdate;
}
}
}
}
Очевидно, я ищу "ЧТО ЗДЕСЬ" в методе расширения.
Спасибо,
WTS