여기 내 상황이 있습니다. C# 클래스 라이브러리가 있습니다. Rectangle
과 같은 일부 유형을 노출합니다. 또한 알고리즘 계산을 수행하는 몇 가지 메소드를 제공합니다.C#과 F를 모두 사용하는 프로젝트의 순환 참조 해결 #
F #에서 알고리즘 비트를 쓰는 것이 좋습니다. 그래서 다른 F # 라이브러리 프로젝트를 솔루션에 추가했습니다.
이제 문제가 있습니다. F # 프로젝트가 알고리즘 계산을 수행하려면 C# 프로젝트의 Rectangle
에 대해 알아야합니다. 그리고 C# 프로젝트가 F # 함수를 사용할 수 있으려면 F # 프로젝트를 참조해야합니다. 그래서 순환 참조가 있습니다.
하나의 가능한 솔루션은 Rectangle
을 정의한 다음 세 번째 프로젝트를 작성한 다음 F #과 C# 둘 다에서 해당 프로젝트를 참조한 다음 C#에서 F # 프로젝트를 참조하여 함수를 사용할 수 있도록하는 것입니다.
이 문제는 내 라이브러리 사용자가 내 C# 프로젝트뿐만 아니라 추가로 세 번째 프로젝트 (알고리즘에 입력을 제공해야하기 때문에)를 참조해야한다는 것입니다.
F #을 사용하는 것은 구현 세부 사항이며 내 라이브러리가 사용되는 방식에 오버 헤드가 발생하지 않으므로 실제로 허용되지 않습니다.
Rectangle
이 C# 프로젝트에 있다고 가정 해 봅니다. 알고리즘의 F # 구현 (F #에서 함수를 호출하는 C#의 메서드)에 대한 "인터페이스"는 C# 프로젝트에도 있습니다. 어떻게 연결하여 작동합니까? 다른 옵션이 있습니까?
순환 참조를 거부하는 것이 이상하게 보입니다. 이처럼 단단히 묶인 프로젝트는 실제로 직접 그래프 구조를 가지고 있지 않습니다.
내가 알고있는 추가 방법이 있습니다. F # 프로젝트는 자신의 Rectangle
이고 양쪽 끝에서 직렬화 및 비 직렬화를 수행합니다. 이것은 지루하고 F #을 사용하여 코드를 더 간단하게 만드는 원래의 생각과 반대입니다.
C# 사각형 클래스가 구현하는 F # 프로젝트에서 사각형 인터페이스를 만드는 방법은 무엇입니까? –
C# 사각형에 대한 참조가 F # 어셈블리에 대한 참조를 필요로한다는 것을 의미하지는 않습니까? –
네,하지만 이제는 F #이 C#을 필요로하지 않습니다. 그것은 인터페이스와 함께 작동하는 기능을 노출합니다. –