제목에서 말한대로 여러 어셈블리에서 반환 값을 얻을 수 있습니까?여러 어셈블리에서 반환 값을 얻을 수 있습니까?
는 예를 들어 가정 다음과 같은 솔루션은 존재합니다
SolutionA
|
|-Project A
|
|-Project B
프로젝트 B는 프로젝트 A로 참조하는 경우, 수있는 프로젝트 A의 방법에 프로젝트 B 수율 값의 방법은?
제목에서 말한대로 여러 어셈블리에서 반환 값을 얻을 수 있습니까?여러 어셈블리에서 반환 값을 얻을 수 있습니까?
는 예를 들어 가정 다음과 같은 솔루션은 존재합니다
SolutionA
|
|-Project A
|
|-Project B
프로젝트 B는 프로젝트 A로 참조하는 경우, 수있는 프로젝트 A의 방법에 프로젝트 B 수율 값의 방법은?
Linq 및 그 확장 방법은 내가 사용하는 것과 다른 어셈블리에 있습니다. 그래서 네 :) :
그리고 (편집. 긍정적 인 확인에 의지하는 매우 중요한 이유였습니다 적어도 꽤 빨랐다) 콘솔 응용 프로그램 어셈블리 및 클래스 라이브러리 어셈블리 사이에 지금 확인 :
클래스 라이브러리에서public IEnumerable<string> test()
{
yield return "1";
yield return "2";
yield return "3";
yield return "4";
}
은 콘솔 응용 프로그램에 완벽하게 호출 할 수 있습니다 :
var t =new ClassLibrary1.Class1();
foreach (var test in t.test())
{
Console.WriteLine(test);
}
왜해야하지? 외부에서 반복기는 반환 형식이 IEnumerable<T>
인 메서드 일 뿐이므로 메서드를 호출 할 수 있으면 "여러 어셈블리에서 반환 값을 생성합니다".
반복기 블록 (즉, yield
키워드를 포함하는 방법) 어디서나 메소드 외부 그것이 IEnumerable
또는 IEnumerator
를 반환 비 반복기 블록 다르지 않다한다는 의미에서, 그 하나의 방법에 특정한 . 예를 들어, 말하자면, "자기 자신"이 아닌 다른 반복자에 값을 부여 할 수는 없습니다. 이 코드를 통해 보여 쉽게 :
public class Foo
{
public static IEnumerable<int> Bar()
{
yield return 1;
Baz();
}
private static void Baz()
{
//there's no way for me to yield a second item out of Bar here
//the best I can do is return an `IEnumerable` and have `Bar`
//explicitly yield each of those items
}
}
당신은 물론 어디 방법이 액세스 할 수있는에서 반복자 블록을 소비 할 수 있습니다. Bar
은 동일한 클래스의 다른 메서드, 동일한 어셈블리의 다른 클래스 또는 다른 참조 된 어셈블리에서 호출 할 수 있습니다. 이 호출자 중 누구 에게라도 IEnumerable
을 반환하는 다른 메소드와 다를 바 없습니다.
이것은 내가 겉으로 드러내고 인식 할 수있는 상황입니다. 아직 공식적으로 절반을 표현할 수 없었습니다. 감사 – samy
왜 사용해 보지 않으시겠습니까? –
그것의 과정에서 - 그러나 나는 이것에 대한 구체적인 예를 찾을 수 없거나 어쨌든 질문을 던질 것이라고 대답 한 대답을 보았습니다 :-) –