You can use InternalsVisibleToAttribute to supply access to internal members of assembly A to members od asembly B.
//Inside Shared Assembly
[assembly:InternalsVisibleTo("Runtime")]
public class SharedClass
{
private string info;
public string Info
{
get
{
return info;
}
}
internal void SetInfo(string info)
{
this.info = info;
}
}
Manager defined by Runtime has access to SetInfo and calls it to modify info.