1

これはおそらく非常に単純な問題ですが、私には理解できません。フォームのコンストラクターに次の小さなコード行があります。

 public FrmMain()
 {
    InitializeComponent();
    gdcSVN.DataSource = _presenter.GetAllFiles();
 }


 public List<IVersionedFile> GetAllFiles()
 {
    List<IVersionedFile> all = new List<IVersionedFile>();
    all.AddRange(_addedFiles);
    all.AddRange(_removedFiles);
    all.AddRange(_updatedFiles);
    return all;
 }

gdcSVNDevExpress GridControl です。GetAllFilesを返しますList<IVersionedFile>。これは次のように定義されています。

public interface IUserFile
{
    string Name { get; }
    string Path { get; }
}

public interface IVersionedFile : IUserFile
{
    long Revision { get; }
    SvnStatus Status { get; }
}

class VersionedFile : IVersionedFile
{
    #region constructors
    protected VersionedFile(string name, string path, long revision, SvnStatus status)
    {
        Name = name;
        Path = path;
        Revision = revision;
        Status = status;
    }

    public VersionedFile(string name)
        : this(name, String.Empty, -1, SvnStatus.Zero)
    {}

    public VersionedFile(string name, string path)
        : this(name, path, -1, SvnStatus.Zero)
    {}

    public VersionedFile(string name, string path, long revision)
        : this(name, path, revision, SvnStatus.Zero)
    {}
    #endregion

    #region IVersionedFile members

    public string Name { get; set; }
    public string Path { get; set; }
    public long Revision { get; set; }
    public SvnStatus Status { get; set; }

    #endregion
}

フォームを実行すると、GridControl には と の 2 つの列しかありませRevisionStatus。IUserFile インターフェイスから継承されたプロパティをグリッドに表示するにはどうすればよいですか?

編集して明確にする。2 つのインターフェイス間の 4 つのプロパティすべてをグリッドに表示したいと考えています。NamePathRevision、およびStatus。現在、 の最後の 2 つだけが表示されIVersionedFileます。

4

1 に答える 1

1

実際に私たちが通常使用classするアイテムタイプinterfaceは、お勧めしません。どういうわけか、基になる基本インターフェイスのメンバーが検出できません。私はそれがあなたが望むように機能するべきだと本当に思います。このコードでデータソースを少し変更する必要があると思います:

gdcSVN.DataSource = _presenter.GetAllFiles().Cast<object>().ToList();

つまり、 の要素を参照するときはいつでも、必要に応じてキャストを実行するDataSourceタイプであることを知っておく必要があります。また、基になるタイプはであり、一部のプロパティ (すべてではない) を公開するためのインターフェイスにすぎないことにも注意してください。IVersionedFileVersionedFileIVersionedFile

于 2013-11-04T18:27:17.470 に答える