Reputation: 929
I am trying to use the Dispatched aspect on a class to push execution to the UI thread but I am getting an error at build time. Here is the error:
You cannot add an aspect to a generic type instance. Add the aspect to the corresponding generic type definition.
It seems to have a problem with me putting the aspect on a class that derives from a generic type.
Here is a simplified code sample that can reproduce this:
interface IView
{
}
class Presenter<T>
{
}
class DataPresenter : Presenter<IView>
{
[Dispatched]
void DoSomething()
{
}
}
Am I missing something or is it not possible to use aspects on a class that inherits from generic types?
Upvotes: 2
Views: 117
Reputation: 929
As Daniel mentions in the comments, this is a bug in PostSharp but I found a work around. I modified the presenter class:
class Presenter<T> : DispatcherObject, IDispatcherObject
{
IDispatcher IDispatcherObject.Dispatcher => DispatcherFactory.GetDispatcherForWindowsDispatcher(Dispatcher);
}
In my code Presenter was already inheriting from DispatcherObject, so implementing the IDispatcherObject interface fixed my issue.
Upvotes: 1