You can access the protected member from a different assembly, but only within a subclass (as normal for protected access):
// In DLL 1
public class Class3 : class2
{
public void ShowSample()
{
Console.WriteLine(sample);
}
}
Note that your current code would fail even if the classes were in the same assembly.