별도의 솔루션에 속하는 두 개의 Windows Forms 응용 프로그램이 있습니다. 다른 하나를 사용하여 메서드를 호출하려고합니다. 나는 (솔 1) 액세스하려고하는 솔루션에서 클래스 라이브러리를 생성하고 (솔 2) 내가 실행중인 프로젝트에서 참조하지만 난 방법을 액세스하는 데 어려움을 겪고있어. 다른 프로젝트 및 네임 스페이스에서 비 정적 메서드 호출
나는 이런 식으로 일을 제안이 solution을 발견string s = string InvokeStringMethod3 ("TheProject", "TheNamespace", "TheClass", "TheMethod");
public static string InvokeStringMethod3(
string assemblyName,
string namespaceName,
string typeName,
string methodName)
{
Type calledType = Type.GetType(namespaceName + "." + typeName + "," + assemblyName);
String s = (String)calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public |
BindingFlags.Static,
null,
null,
null);
}
내가 그것을 실행하면, 내가 calledType
가 null 인 NullReferenceException
를 얻을. 의견에 따르면,이 방법은 static
에서만 작동하지만 전화하려고하는 방법은 public void
입니다.
정적이 아닌 방법으로 작동하도록 수정하는 방법이 있습니까? 아니면 다른 방법으로해야합니까? 저는 Visual Studio 2015에서 C#으로 작업하고 있으며 두 프로젝트 모두 .NET입니다.
이 메소드가 속한 클래스를 인스턴스화하면 어떨까요? – guijob
정적 메서드와 인스턴스 (비 정적) 메서드의 차이점을 알고 있습니까? 이 질문에 대답하는 것뿐만 아니라 C#을 배우려면 두 가지의 차이점을 이해해야합니다. –
@EdPlunkett 올바르게 이해하면 (C#을 처음 접했을 때) 정적 인 경우 프로그램을 실행할 때마다 정적으로 유지되지만 인스턴스는 그렇지 않습니다. – AxxieD