I\'m making an open source C# library for other developers to use. My key concern is ease of use. This means using intuitive names, intuitive method usage and s
I would expose only items that make sense to expose. For you code the end result is movie information. The downloader and parser are useless unless used to get the movie information so there is no reason to expose them.
Also in your Movie class I would only make the information Getable, not Setable too. there is no, "save" functionality to the class so there is no reason to edit the information once you get it.
Other than that if this is for other people, I would comment what each class, and member and each public/private class variable are for. For the Movie class I would probably include an example of how to use it in the class comment.
The last thing, if there is an error in the two private classes, the user of the Movie class needs to be informed somehow. Possibly a public bool variable called success?
On a personal preference note, for Your Movie class, I would have your two functions be constructors so that I could just build the class as follows.
Movie myMovie = new Movie("Name"); or Movie myMovie = new Movie(1245);