1)
From
http://msdn.microsoft.com/en-us/library/cc440940.aspx:
How Unity Resolves Target Constructors and Parameters
When a target class contains more than one constructor, Unity will use the one that has the InjectionConstructor attribute applied. If there is more than one constructor, and none carries the InjectionConstructor
attribute, Unity will use the constructor with the most parameters. If
there is more than one such constructor (more than one of the "longest"
with the same number of parameters), Unity will raise an exception.
So, Unity is correctly choosing the constructor with the most parameters.
However, in your case, your view engine factory requires an interface. What class implements that interface? You need to configure the container with a type mapping for that interface so it knows what concrete type to create to provide the constructor parameter.
2) I'm not 100% sure I understand your question, but I think you're asking if there's a way to configure the container with information for a base class, and then use that configuration whenever you try to resolve something derived from that base class. If that's what you're asking, the answer is there is no way to do that. If it's not what you're asking, then I need more information to understand what you want.
-Chris