Design Issue: Different interfaces for add-in devs and add-in consumers together with abstact factory
<p>I'm developing a service which shall be extendable through add-ins (or plugins). The add-ins need to create some objects which have other external dependencies. Therefore the creation should be only possible through a factory that resolves the dependencies. The objects served by the factory shall only give read-only access to the consumers of the add-ins, but read-write access to the actual add-in that created the object.</p>

<p>A simplified sample:</p>

<pre><code>//Interface for Add-In consumers
public interface IAddInChild
{
   string Name { get; }
}

//Interface for Add-In development
public interface IAddInChildInternal
{
   string Name { get; set; }
}

//example of a concrete implementation
public class AddInChild : IAddInChild, IAddInChildInternal
{
   string Name { get; set; }
}

//the factory passed to Add-Ins to create instances
public interface IAddInChildFactory
{
   IAddInChildInternal CreateChild();
}
</code></pre>

<p>I think this could be a solution, but for whatever reason I don't really like it. How would you solve it? Any better ideas?</p>
