???????InternalsVisibleTo????
????????????????????д???????????????????????????????????????????????????????????????????????????????????С??????????????????????У???????????????е????????????????????????????????????????????????????????????????????????
?????????????????????????????????????е?????????????????????????????????????????????????????????????μ??????????????????????????????????????????????????е???????????????й??е????????????????????????????????????п???????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????DLL??????????????????
????.NET?????InternalsVisibleTo?????????????????????????AssemblyInfo.cs?????????InternalsVisibleTo??????????????????????????????????????????е???????????????????????????Щ????????????????????????????????
?????3.10????????????????AssemblyInfo.cs?????

?????????嵥3.10????InternalsVisibleTo?????????????????????嵥3.10????????????????
?????????嵥3.10??InternalsVisibleTo????????
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CodeSamples")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Reengineering .NET")]
[assembly: AssemblyProduct("CodeSamples")]
[assembly: AssemblyCopyright("Copyright ? Brad Irby")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM?? set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if
// this project is exposed to COM.
[assembly: Guid("693b33bf-7738-42b0-b743-ed05a8d28d8e")]
// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the
// Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: InternalsVisibleTo("CodeSampleUnitTests")]
?????????????CodeSampleUnitTests????????????????????????????????????????????????????в?????????????????AssemblyInfo.cs????С??????嵥3.11??????з??????????????????????????Internal???????????????
?????????嵥3.11????????????
namespace CodeSamples.Ch03_UnitTesting.Listing11
{
public class SampleInternalMethod
{
/// <summary>
/// Sample method with the internal setting
/// </summary>
internal void InternalMethod(string pMessage)
{
//code goes here
}
}
}