0

それが可能かどうかはわかりません。クライアント API を扱う際に固有の問題が発生しています。クラスを拡張し、基本クラスに存在しない bool プロパティを追加する必要があります。

以下は、私が達成しようとしていることの例です。

public class baseClass
{
    //.. No Editable Access
}

public class Extended
{
    public bool flaggedAsDeleted(this baseClass bc)
    {
        //Idealy was looking for get; set; but I know that don't work
        return true;// Need to know if possible to set property on baseClass or Alternative
    }

    public void flagAsDeleted(this baseClass bc)
    {
        flaggedAsDeleted = true;
    }
}

public class program
{
    public void doit()
    {
        baseClass bc = new baseClass();
        bc.flagAsDeleted();
    }

}
4

2 に答える 2

3

実際にクラスを拡張しようとしている場合は、次のようにします。

public class BaseClass
{
    //.. No Editable Access
}

public class Extended : BaseClass
{
    public bool FlaggedAsDeleted { get; set; }
}

既存のクラスにデータを追加しようとしている場合、次の 2 つのオプションがあります。

  1. 継承 - 上記のとおり。

  2. カプセル化 - 追加する型のインスタンスを保持する新しいオブジェクトを作成します。


C# はExtension Methodsと呼ばれる機能を提供します。これにより、既存のクラスにメソッドを一見追加することができます。ただし、クラスのパブリック API に制限されているため、これらは実際には単なる構文糖衣です。

public class BaseClass
{
    public int Value { get; set; }
}

public static class ExtensionMethods
{
    public static void Increment(this BaseClass b)
    {
        b.Value += 1;
    }
}

ただし、拡張メソッドでは、既存のクラスにデータを追加することはできません。

于 2014-03-14T03:10:01.197 に答える
0

これはユニークではありません。これは、 decoratorと呼ばれるデザイン パターンを使用して解決される一般的な問題です。

于 2014-03-14T03:10:12.303 に答える