I have populated an array of type ICanvasEffect with objects of derived classes, such as GaussianBlurEffect, PosterizeEffect, etc.
List<ICanvasEffect> effects = new List<ICanvasEffect>();
effects.Add(new GaussianBlurEffect
{
BlurAmount = 4.0f,
BorderMode = EffectBorderMode.Soft,
Optimization = EffectOptimization.Balanced
});
effects.Add(new PosterizeEffect
{
RedValueCount = 3,
GreenValueCount = 3,
BlueValueCount = 3
});
I now want to set the input sources of those effects in an abstract way. For example,
effects[0].Source = inputBitmap;
effects[1].Source = effects[0];
However, in order to call the Source property, I must provide knowledge of the specific class. For example,
(effects[0] as GaussianBlurEffect).Source = inputBitmap;
(effects[1] as PosterizeEffect).Source = effects[0];
How could this be done in an abstract way as in, for example, this fashion?
(effects[0] as effects[0].GetType()).Source = inputBitmap;
(effects[1] as effects[1].GetType()).Source = effects[0];