Martin Dybal

Vývojářský blog Martina Dybala

Podle kategorie

PostSharp 4

Martin Dybal       22.11.2014       PostSharp a AOP       13043 zobrazení

Nedávno vyšla nová verze PostSharp 4. Došlo k řadě vylepšení a optimalizací. Pojďme se podívat na nejpodstatnější novinky.

Undo / Redo

 

Jak již název napovídá PostSharp přináší jednoduchý způsob implementace funkce zpět a vpřed. Stačí použít nový aspekt Recordable ten defaultně ukládá změny ve třídě do RecordingServices.DefaultRecorder, samozřejmě lze použít i jinou instanci.

    [Recordable]
    [NotifyPropertyChanged]
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }

Ve wpf přidáme kontrolky pro tlačítka vpřed a vzad

 xmlns:model="clr-namespace:PostSharp.Patterns.Model.Controls;assembly=PostSharp.Patterns.Model.Controls" 

...

 <model: verticalalignment="Top" margin="22,24,0,0" horizontalalignment="Left" undobutton />
 <model: verticalalignment="Top" margin="64,24,0,0" horizontalalignment="Left" redobutton />

A máme hotovo. Samozřejmě že nemusíme využívat PostSharp komponenty a můžeme použít vlastní, to nám umožní Metody Recorderu. Referenci na defaultní recorder dostaneme pomocí RecordingServices.DefaultProvider.

Multi threadingové programování

Na multi-threading a především na thread-safe se zaměřili při vývoji nového PostSharpu asi nejvíce. PostShrap zvyšuje abstrakci paralelního programování, implementací několika běžných problémů pomocí aspektů, jako například problém čtenářů a písařů. Kompletní přehled naleznete v tomhle dokumentu, detaily pak v dokumentaci Threading Pattern Library.

[ReaderWriterSynchronized]
class Order
{
    // Other details skipped for brevity.

    public decimal Amount
    {
       [Reader] get;

       [Writer] private set;
    }

    [UpgradeableReader]
    public void Recalculate()
    {
        decimal total = (decimal)0.0;
        for (int i = 0; i < lines.Count; ++i)
        {
            total += lines[i].Amount;
        }

        this.Amount = total;
    }
}

[ReaderWriterSynchronized]
class OrderCollection : ICollection<Order>, INotifyCollectionChanged
{
    List<Order>  list = new List<Order>();

    // Details skipped.

    [Reader]
    public int Count
    {
        get
        {
            return list.Count;
        }
    }

    [Writer]
    public void Add(Order o)
    {
        list.Add(o);
        NotifyCollectionChangedEventArgs changedArgs = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, o);
        OnCollectionChanged(changedArgs);
    }

    [Writer]
    public void Remove(int index)
    {
        NotifyCollectionChangedEventArgs changedArgs = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, list[index]);            
        list.RemoveAt(index);
        OnCollectionChanged(changedArgs);
    }

    [Yielder]
    private void OnCollectionChanged(NotifyCollectionChangedEventArgs changedArgs)
    {
        CollectionChanged(this, changedArgs);
    }

    [Reader]
    public Order Get(int index)
    {
        return (Order)list[index];
    }

    public event NotifyCollectionChangedEventHandler CollectionChanged;
}

Kolekci samozřejmě nemusíme implentovat, stačí použít AdvisableCollection.

[ReaderWriterSynchronized]
class OrderCollection : AdvisableCollection<Order>  
{
}

Podpora

PostSharp 4 nově podporuje

    • Win RT
    • Windows Phone včetně "Silverlight"
    • C++ “mixed mode”

PostSharp 4 vyžaduje

  • Na vývojářský strojích a build servrech
    • .NET 4.5
    • Visual Studio 2012 nebo novější
  • Na uživatelských PC
    • .NET 3.5 a vyšší
    • Windows phone 8 nebo 8.1
    • Silverlight 5

    Live Webinar

    Ve čtvrtek 20.listopadu proběhne Live Webinar: What's New in PostSharp 4

    Aktualizace

    Dnes vyšel PostSharp 4.1 Preview, lze ho stáhnout přes nuget jako pre-release package. Nová verze přináší podporu VisualStudia 2015 a Především pak podporu XAMARIN. Již je možné psát vlastní aspekty v Xamarin projektech, ale ještě nebyly portovány předdefinované aspekty PostSharpu, toho se dočkáme v některé z příštích preview. Podpora je zatím jen velmi základní, ale důležité je, že se na ní pracuje! Dále přibyla PostSharp Threading Pattern Library pro Windows Phone a Windows Store.

     

    hodnocení článku

    0       Hodnotit mohou jen registrované uživatelé.

     

    Nový příspěvek

     

    Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

                           
    Nadpis:
    Antispam: Komu se občas házejí perly?
    Příspěvek bude publikován pod identitou   anonym.

    Nyní zakládáte pod článkem nové diskusní vlákno.
    Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

    Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

     

    • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
      Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
    • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

    Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

    přihlásit pomocí externího účtu

    přihlásit pomocí jména a hesla

    Uživatel:
    Heslo:

    zapomenuté heslo

     

    založit nový uživatelský účet

    zaregistrujte se

     
    zavřít

    Nahlásit spam

    Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

    Nahlásit Zrušit

    Chyba

    zavřít

    feedback