저는 C# -project에 대한 전략적인 질문이 있습니다. 나는 플러그인 개념을 구현하고 플러그인이 주 프로젝트의 데이터를 조작하는 최선의 방법으로 고심하고 싶다.PlugIn-Concept에서의 데이터 조작
처음에는 필자는 주 프로젝트에서 플러그인을로드 할 때 클래스를 플러그인 클래스로 식별 할 수있는 플러그인 인터페이스를 정의하는 "마스터"플러그인 프로젝트를 만들었습니다.
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public sealed class GraphViewerPlugInAttribute : Attribute
{
}
public interface IGraphViewerPlugIn
{
Panel GetRightSidePanel();
string Name();
}
이 프로젝트는 주 프로젝트 및 플러그인 클래스에서 참조됩니다. pluginclass는 인터페이스를 구현합니다 ...
[GraphViewerPlugIn]
public class myTestPlugIn : IGraphViewerPlugIn
{
public Panel GetRightSidePanel()
{
Panel myPanel = new Panel();
myPanel.BackColor = System.Drawing.Color.Red;
return myPanel;
}
public string Name()
{
return "TestPlugIn";
}
}
... 및 기본 프로젝트는 특정 디렉토리에 저장된 모든 플러그인을로드합니다.
지금까지 꽤 잘 진행되었지만 PlugIn에서 특수 패널을 얻을 수는 있지만 지금은 PlugIn에서 기본 프로젝트의 데이터를 조작하고 싶습니다. 그렇게하는 가장 좋은 방법은 무엇입니까? "Master Plugin Project"에 정의 된 일종의 데이터 컨테이너 클래스가 있습니다. 플러그인은 데이터를 해당 컨테이너에 저장하고 데이터가 변경된 이벤트를 통해 주 프로젝트를 인식하고 변경된 데이터를 확인한 다음 변경 사항을 적용 할 수 있습니다. 올바른 방향인지, 고려해야 할 사항과이를 구현하기 위해 어떤 기법 (즉, 이벤트, 정적 클래스 ...)을 사용해야합니까?