基本インターフェイスで具体的なクラスの値に読み取り専用アクセスが可能なC#2.0アプリケーションがあります。しかし、具体的なクラスでは、私はその値への読み取り/書き込みアクセス権を持っていたいと思います。だから、私はこのような実装があります。読み取りのみを定義するインターフェイスの読み書きフィールドを実装する
public abstract class Base
{
public abstract DateTime StartTime { get; }
}
public class Foo : Base
{
DateTime start_time_;
public override DateTime StartTime
{
get { return start_time_; }
internal set { start_time_ = value; }
}
}
をしかし、これは私にエラーを与える:
Foo.cs(200,22): error CS0546: 'Foo.StartTime.set': cannot override because 'Base.StartTime' does not have an overridable set accessor
私は書き込みアクセス権を持っているために、基本クラスを望んでいません。しかし、私は具体的なクラスに読み書きアクセスを提供したい。この仕事をする方法はありますか?それはまた、非抽象機能が含まれているよう
おかげで、 PaulH残念ながら
は、Base
は、インターフェースに変更することはできません。私は元の問題の説明に入れるべきだと思っていたはずのもの。
public class Foo : Base
{
DateTime start_time_;
public override DateTime StartTime
{
get { return start_time_; }
}
internal void SetStartTime
{
start_time_ = value;
}
}
それは私が好きなように素敵ではないのですが、それは動作します:
public abstract class Base
{
public abstract DateTime StartTime { get; }
public void Buzz()
{
// do something interesting...
}
}
私のソリューションは、これを行うことです。
+1私よりも速く:-) –
インターフェイスは抽象基本クラスの代わりではないため、 –