두 개의 일반 메서드 중 하나를 void로 만들고 다른 메서드는 반환 형식을 사용하려고합니다. void 메서드는 Action
대리자를 사용하고 다른 하나는 Func
대리자를 사용합니다. 보이드 메소드의 구현은 다음과 같다 :대리자 매개 변수가있는 일반 메서드
public static void ExecuteVoid<T>(Action<T> actionToExecute)
{
string endpointUri = ServiceEndpoints.GetServiceEndpoint(typeof(T));
using (ChannelFactory<T> factory = new ChannelFactory<T>(new BasicHttpBinding(), new EndpointAddress(endpointUri)))
{
T proxy = factory.CreateChannel();
actionToExecute(proxy);
}
}
이 잘 작동하지만 나는 void 이외의 방법으로 가진 문제 해요 : 나는에 전화를 걸 때 이제
public static T ExecuteAndReturn<T>(Func<T> delegateToExecute)
{
string endpointUri = ServiceEndpoints.GetServiceEndpoint(typeof(T));
T valueToReturn;
using (ChannelFactory<T> factory = new ChannelFactory<T>(new BasicHttpBinding(), new EndpointAddress(endpointUri)))
{
T proxy = factory.CreateChannel();
valueToReturn = delegateToExecute();
}
return valueToReturn;
}
을 이 같은 방법
The type arguments for method 'ServiceFactory.ExecuteAndReturn<T>(System.Func<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
:
var result = ServiceFactory.ExecuteAndReturn((IMyService x) => x.Foo());
나는이 컴파일 오류가
Foo()
은 object
을 반환하는 인수가없는 메소드입니다.
var result = ServiceFactory.ExecuteAndReturn<IMyService>(x => x.Foo());
을하지만 지금은
Delegate 'IMyService' does not take 1 arguments.
정말 여기에 잃었어요 말을 다른 예외를 받고 있어요 : 나는 다음 명시 적으로 유형을 지정하여 메소드를 호출했습니다. 어떤 도움을 주셔서 감사합니다.
'위임'IMyService은 '1 개 인자를 고려하지 않습니다 " IMyService의 정의는 무엇입니까? –
@terrybozzio이 경우'x'의 타입은 무엇입니까? 형식을 어떻게 든 지정해야합니다. – PoweredByOrange