>백엔드 개발 >C#.Net 튜토리얼 >반사 기술의 실제 적용을 요약합니다.

반사 기술의 실제 적용을 요약합니다.

零下一度
零下一度원래의
2017-06-23 15:00:351468검색

 반영의 사용은 이전에 요약되었습니다. 이 기사는 완전한 프로젝트를 결합하여 반사의 실제 적용을 요약합니다.

프로젝트 구조

는 아래와 같습니다:

플러그인 인터페이스 정의

ConsoleApplication6.IService 프로젝트에서는 두 개의 인터페이스가 정의됩니다. Run은 운전을 나타내고 Trun은 조향을 나타냅니다. 다음 코드:

 1 namespace ConsoleApplication6.IService 2 { 3     /// <summary> 4     /// 创建一个车的接口 5     /// </summary> 6     public interface ICarService 7     { 8         /// <summary> 9         /// 行驶10         /// </summary>11         void Run();12 13         /// <summary>14         /// 转向15         /// </summary>16         /// <param name="direction"></param>17         void Turn(Direction direction);18 19     }20 21     public enum Direction22     {23         East,24         Weast,25         South,26         North27     }28 }

플러그인 구현

여기에는 플러그인 프로그램을 구현하기 위해 ConsoleApplication6.Service.BMW 및 ConsoleApplication6.Service.BenZ라는 두 개의 새 프로젝트가 생성됩니다.

 1 namespace ConsoleApplication6.Service.BMW 2 { 3     public class BMWCarService: ICarService 4     { 5         /// <summary> 6         /// 行驶 7         /// </summary> 8         public void Run() 9         {10             Console.WriteLine("BMW Car Run!");11         }12 13         /// <summary>14         /// 转向15         /// </summary>16         /// <param name="direction"></param>17         public void Turn(Direction direction)18         {19             Console.WriteLine(string.Format("BMW Car turn:{0}", direction.ToString()));20         }21     }22 }
 1 namespace ConsoleApplication6.Service.BenZ 2 { 3     public class BenZCarService: ICarService 4     { 5         /// <summary> 6         /// 行驶 7         /// </summary> 8         public void Run() 9         {10             Console.WriteLine("BenZ Car Run!");11         }12 13         /// <summary>14         /// 转向15         /// </summary>16         /// <param name="direction"></param>17         public void Turn(Direction direction)18         {19             Console.WriteLine(string.Format("BenZ Car turn:{0}", direction.ToString()));20         }21     }22 }

프로그램 실행

다음으로 다음 코드에 표시된 것처럼 리플렉션을 사용하여 이 플러그인 프로그램을 실행할 수 있습니다.

 1 namespace ConsoleApplication6 2 { 3     class Program 4     { 5         static void Main(string[] args) 6         { 7             var assembly = Assembly.Load("ConsoleApplication6.Service.BMW");//也可以从配置文件中读取 8             var t = assembly.GetType("ConsoleApplication6.Service.BMW.BMWCarService");//也可以从配置文件中读取 9 10             //创建一辆车的实例11             var obj = Activator.CreateInstance(t);12             ICarService car = obj as BMWCarService;13             if (car != null)14             {15                 car.Run();16                 car.Turn(Direction.East);17             }18 19             Console.ReadKey();20         }21     }22 }

이런 방식으로 간단한 플러그인 프로그램이 완성되는 것과 동시에, 유사한 플러그인 프레임워크를 개발한다면 이는 반영 기술에 광범위하게 사용될 것입니다.

위 내용은 반사 기술의 실제 적용을 요약합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:정적 클래스다음 기사:정적 클래스