가능한 중복 상속 :
How can a static class derive from an object?는 정적 클래스를
내가 정적 클래스를하고 나는 다른 정적 클래스에서 상속 싶어하지만 컴파일러는 그렇게 금지. "정적 클래스는 객체에서 파생되어야합니다."
왜 그런지 알고 싶습니까? 해결 방법이 있습니까?
가능한 중복 상속 :
How can a static class derive from an object?는 정적 클래스를
내가 정적 클래스를하고 나는 다른 정적 클래스에서 상속 싶어하지만 컴파일러는 그렇게 금지. "정적 클래스는 객체에서 파생되어야합니다."
왜 그런지 알고 싶습니까? 해결 방법이 있습니까?
정적은 공유되며 상속받을 수 없음을 의미합니다. 당신이 이것을 할 수있는 방법이 없습니다.
상속을 통해이를 수행 할 수 없습니다. Composite Pattern을 사용해보세요.
여기에는 여러 개의 개체가 있으며 인터페이스를 구현하고이를 구성원으로 갖는 정적 클래스로 "구성"됩니다. 따라서 인터페이스를 구현하는 각 새 클래스에 비헤이비어를 추가 할 수 있으며 런타임시 상호 교환이 가능하다는 이점이 있습니다.
편집 : 다음
public class Foo
{
protected static class StaticClass
{
public static int Count { get; set; }
}
public virtual string GetBars()
{
return "I am Foo: " + StaticClass.Count++;
}
}
public class FooToo:Foo
{
public override string GetBars()
{
return "I am Foo Too: " + StaticClass.Count++;
}
}
... 정적 클래스에서 상속 할 수 없습니다
Foo foo = new Foo();
Foo fooToo = new FooToo();
Console.WriteLine(foo.GetBars());
Console.WriteLine(fooToo.GetBars());
은, 그들이 봉인, 정적 방법은 가상 수 없습니다.
디자인을 재검토해야 할 필요가 있다고 생각합니다. 정적 클래스 대신 싱글 톤 패턴을 사용하는 것이 좋을 것입니다. 그렇다면 문제없이 상속받을 수 있습니다.
하거나 고정 부재는 두 개의 클래스 조인 사용
정적 A 급 { 정적 B의 B 단계; }
정적 클래스를 멤버 유형으로 사용할 수 없으며 단순히 인스턴스를 생성 할 수 없습니다. 그것은 추상적입니다. –
@Ben. 나는 분명히해야했다. 내가 제안한 것은 정적 속성이 아니라 인터페이스를 구현하고 정적 동작을위한 정적 멤버가 포함 된 비 정적 유형의 인스턴스 속성이었습니다. 그러면 해당 클래스에서 상속하여 동작을 추가 할 수 있습니다. 공개적으로 정적 인 것은 없습니다. 그게 효과가 없을까요? – Laramie