추상 클래스를 속성 유형으로 사용하는 것을 방지 할 수 있습니까?추상 클래스를 속성 유형으로 사용하지 못하도록
제네릭 형식의 추상 클래스에서 상속되는 추상 기본 클래스가 있습니다. 제네릭 형식은 정의 된 형식의 클래스에서 상속됩니다. 제네릭 형식으로 추상 클래스를 "잠그는"것이 가능한가? 그래서 다른 클래스의 속성으로 사용할 수는 없습니까?
다음은 내 상황을 대략적으로 나타낸 것입니다. doubleFoo2
과 같은 속성을 만들지 않도록하고 싶습니다. Foo<T>
은 다른 클래스에서 상속 될 수 있어야하며 직접 유형으로 사용할 수 없어야합니다.
속성과 기본 유형이 PropertyType
인 것을 확인하고 있기 때문에 실수로 나를 찾아 내는데 시간이 걸렸습니다. 여기에 코드의 테스트입니다 : 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; }
}
* 가능 "잠글 수 있나요 "제네릭 형식의 추상 클래스이므로 다른 클래스의 속성으로 사용할 수 없습니까? * 아니요, 불가능합니다. 르.왜 그런 걸 신경 쓰나요? 무엇을 성취하려고합니까? – CodingYoshi
'내부'또는 '개인'으로 설정해야합니까? – JohnyL
@ 코딩 요시 필자는 다음과 같이 썼습니다. "속성 유형과 기본 유형의 PropertyType을 검증했기 때문에 실수로이 점이 발견되어서 시간이 많이 걸렸습니다." 나는. 나는 실수를 다시 피하고 싶다. – Oystein