2017-09-26 9 views
0

同じプロジェクト、ProjectViewとFeatureViewに2つのクラスがあります。別のクラスのあるクラスでBindingSourceにアクセスする必要があります。私はの範囲をprivateの代わりにinternalにするような尖った部分があります。恥、恥ずべき。これを行うより良い方法はありますか?多分別のクラスの1つのクラスのBindingSourceにアクセス

// ProjectView.cs 
public partial class ProjectView : System.Windows.Forms.UserControl { 

} 

// ProjectView.Designer.cs 
partial class ProjectView { 
    // This should be private 
    internal System.Windows.Forms.BindingSource bsFeatures; 
} 

// FeatureView.cs 
public partial class FeatureView : System.Windows.Forms.UserControl { 

    // Get ProjectView 
    Project currentProject = this._presenter.WorkItem.State["CurrentProject"] as Infrastructure.Interface.Aml.BusinessEntities.Project; 
    string key = System.String.Concat("Project", currentProject.Id); 
    this._presenter.WorkItem.State["CurrentProject"] = currentProject; 
    ProjectView view = _presenter.WorkItem.Items.Get<ProjectView>(key); 

    // Populate currentProject.Features with ProjectView.bsFeatures.List 
    currentProject.Features.Clear(); 
    IList featureList = view.bsFeatures.List; 
    foreach (Feature feature in featureList) 
    { 
     currentProject.Features.Add(feature); 
    } 

} 

答えて

2

そのような何か、ではないことを確認:もちろん

partial class ProjectView 
{ 
    // This should be private 
    private System.Windows.Forms.BindingSource bsFeatures; 

    public System.Windows.Forms.BindingSource BindingSource 
    { 
     get { return bsFeatures; } 
    } 

    public void ShareOnlyWith(FeatureView fw) 
    { 
     fw.BindingSource = bsFeatures; 
    } 
} 

我々は、原則の一つを破る、結石には依存しません。

関連する問題