抽象クラスをプロパティタイプとして使用できないようにすることはできますか?抽象クラスをプロパティタイプとして使用しないようにする
抽象クラスに抽象クラスが継承されていますが、抽象クラスはジェネリック型で継承されています。ジェネリック型で抽象クラスを「ロックダウン」することは可能なのですか?他のクラスのプロパティとして使用することはできません。
これは私の状況の近似です。私はdoubleFoo2
のようなプロパティを作成する可能性を避けたいです。 Foo<T>
は、他のクラスで継承することができ、型として直接使用することはできません。
プロパティとその基本タイプのPropertyType
を検証しているので、これは間違いを引き起こしてしまいます。ここでは、コードのテストです: - についてpolymorphism、もちろん、私は話しているhttps://dotnetfiddle.net/OMHmGv
public abstract class FooBase
{
// Various generic properties and methods
}
public abstract class Foo<T> : FooBase
{
public Type ValueType { get { return typeof(T); } }
public abstract T Value { get; set; }
}
public class DoubleFoo : Foo<double>
{
public override double Value { get; set; }
}
public class FooHandler
{
public DoubleFoo doubleFoo1 { get; set; }
public Foo<double> doubleFoo2 { get; set; }
}
内部
インサイドDoubleFoo.cs
*それは「ロックダウンすることが可能です"ジェネリック型の抽象クラスなので、他のクラスのプロパティとして使用することはできませんか?*いいえ、それは可能ではありませんル。なぜそんなことを気にしているのですか?あなたは何を達成しようとしていますか? – CodingYoshi
'internal'または' private'にする必要がありますか? – JohnyL
@コーディングヨシ私はこう書いています。「プロパティとその基本タイプのPropertyTypeを検証しているので、これは間違いを引き起こしてしまいます。私。私は再び間違いをしないようにしたい。 – Oystein