문제

일반 클래스에서 상속되는 USERCONTROL을 만들려고합니다. 제네릭 클래스에서 직접 상속되지 않고 제네릭을 사용하지 않는 중간 클래스를 통해 상속됩니다. 이것은 런타임에 컴파일하고 작동하지만 설계 시간에 오류가 발생합니다.

내 일반적인 학부모 수업은 다음과 같습니다.

Public Class GenericParent(Of T)
    Inherits UserControl
End Class

여기 내 비 게니어 상위 수업은 다음과 같습니다.

Public Class NonGenericParent
    Inherits GenericParent(Of String)
End Class

여기 내 XAML이 있습니다.

<local:NonGenericParent x:Class="SilverlightApplication5.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:SilverlightApplication5"
    Width="400" Height="300">
    <StackPanel>
        <Button Content="Hello"/>
    </StackPanel>
</local:NonGenericParent>

Intellisense Parser는 다음과 같은 오류를 제공합니다.

  1. 속성 '너비'는 '비대형'유형에서 찾을 수 없었습니다.
  2. '높이'속성은 '비대형'유형에서 찾을 수 없었습니다.
  3. 'nongenericparent'유형은 직접 컨텐츠를 지원하지 않습니다.

마치 Intellisense가 일반적인 클래스를지나 상속 트리를 볼 수없는 것처럼 보입니다. SilverlightApplication5.Page 클래스 인 Nongenericparent 클래스에 직접 ContentPropertyAttribute를 지정하려고 시도했지만 작동하지 않습니다.

나는 Silverlight 2.0에서 typearguments 속성이 지원되지 않는다는 것을 읽었습니다. 그렇기 때문에 중간 비대형 클래스를 만들었습니다.

이 오류를 침묵시키는 방법이 있다면 나는 그들을 듣고 싶어합니다.

업데이트: 우리는 MSFT와 함께 지원 티켓을 열었습니다. 솔루션이 무엇이든 업데이트하겠습니다.

도움이 되었습니까?

해결책

우리는 Microsoft로부터 미래 버전에서 고정되지 않을 가능성이 없다는 단어를 받았습니다. 그들이 책임있는 그룹을 찾으려고 노력하는 문제를 겪은 후,이 문제는 WPF 개발자 그룹에 속한 것으로 보입니다. 이곳은 '문제를 해결하지 못할'대답이 나온 곳입니다.

그 동안, 우리는 XAML 2009를 추측 할 때까지 부모 수업에서 제네릭을 YANK하기 위해 코드를 업데이트했습니다.

다른 팁

Silverlight에 대해서는 확실하지 않지만 C#에서 예상대로 컴파일하고 실행됩니다.


class GenericObject[T] : UserControl
{
}

class StaticObject : GenericObject[Int32]
{
    public Int32 wide { get { return this.Width; } }
}

private void Form1_Load(object sender, EventArgs e)
{
    StaticObject so = new StaticObject();
    this.Text = so.wide.ToString();
}

따라서 CLR에 대해 컴파일하면 잘 작동해야합니다.

당신이 제안한대로 지능적인 버그 일 수 있습니다. 일반적으로 Comiler 경고를 무시하는 것에 대해 조언하지만이 경우 경고가 유효하지 않은 것 같습니다.

편집 : 정사각형 괄호가있는 대체 각도 브래킷으로 인해 제거되었습니다.

2.0 실버 라이트 (특히 Silverlight의 VS2008 조정)에도 불구하고 여전히 매우 젊습니다. IDE 물건에는 여전히 단점이 있습니다.

성공적인 빌드 후에도 여전히 문제가 있습니까?

This blog post seems to be related to your issue:

http://blogs.msdn.com/b/wpfsldesigner/archive/2010/01/22/known-issue-controls-deriving-from-a-generic-base-class-must-be-in-separate-assembly.aspx

For Silverlight it seems that you must have 3 classes for this to work.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top