지금까지 배운 것은 인터페이스의 인스턴스를 만들 수 없다는 것입니다.
interface IFood
{
string Color { get; set; }
}
class Apple : IFood
{
public string Color { get ; set; }
}
IFood food = new IFood(); //this gives compile error
IFood food = new Apple(); //this will work
여기까지 모든 것이 괜찮 았습니다. 하지만 함께 일할 때 Microsoft.Office.Interop.Excel
아래와 같은 것을 보았습니다.
Application excel = new Application();// Application is an interface
내가 여기서 무엇을 놓치고 있습니까?
COM의 상호 운용성
Microsoft.Office.Excel
Application
클래스를 포함한 API 는 C ++로 작성됩니다.
C ++의 아키텍처가 더 자유롭기 때문에 경우에 따라 인터페이스를 초기화해야합니다.
.
.NET은 CoClass
COM 개체의 특성을 사용 하여 인터페이스를 시작하는 문제를 해결합니다.
C #은 인터페이스 시작을 허용하지 않지만 CoClass
속성을 사용하면 인터페이스 초기화를 클래스 로 라우팅 할 수 있습니다.CoClass
(천 단어에 해당하는 예제 코드) 따라서이 해결 방법을 재현 해 보겠습니다 .
[CoClass(typeof(SugarGlider))]
[ComImport] // pretend as a COM class
[Guid("000208D5-0000-0000-C000-000000000046")] // put it randomly just to fool the ComImport
public interface ISquirrel
{
string Foo();
}
[ClassInterface(ClassInterfaceType.None)]
public class SugarGlider : ISquirrel
{
public string Foo(){ return "Bar"; }
}
이제 다음 을 통해 인터페이스를 시작할 수 있습니다.new ISquirrel()
전체 예제 및 온라인 실행 : https://rextester.com/ORAZQ51751
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다