After some time spent reading and trying to figure out where to start the porting on Open Live Writer, I started converting on of the projects of the solutions, “HTML Parser” to a PCL in order to be able to use this code later in my Xamarin apps.
I thought to share my changes here on my blog:
This collection dynamically resizes. It grows in capacity as elements are added (if space is needed). It is most often used in older C# programs. – DotNetPerls
This class has been around since the first versions of .Net and since non generic collections are not available in PCL I’ve changed all the ArrayList to List<T>
This optimizes lookups. It computes a hash of each key you add. It then uses this hash code to look up the element very quickly. – DotNetPerls
This is the ancestor of the dictionary, it is slower and again not available in PCL. I’ve changed all the Hastable to Dictionary<T,T>
Stack is a LIFO collection. It provides a powerful and simple last-in-first-out data structure. This can help you develop parsers quickly and also replace complex recursive algorithms. Stack is a generic type. – DotNetPerls
To use Stack, we just need to specify the type so change Stack to Stack<T>
This class is not available in the PCL profile we use but we can use
that exposes the methods we need.
Again this is not available but we can use:
(e.GetType() == type || e.GetType().GetTypeInfo().IsSubclassOf(type));
that returns a bool like Type.IsInstanceOfType
This is almost all the changes I had to do to make a buildable PCL of HTMLParser, I haven’t had already time to test it and see the performances but it should work ok.