2011-10-23 228 views
0

属性get访问器返回的类型可能与set访问器使用的类型不同?属性设置器类型的其他值设置为属性?

private string[] artists; 
public string[] Artists 
{ 
    get { return artists[0]; } //heree getter return string than string[] 
    set { artists = value; OnPropertyChanged("Artist"); } 
} 
+0

注意'OnPropertyChanged(“艺术家”)'不匹配在这里,他的属性名称。 –

回答

2

不,这是行不通的。

你可以添加另一个属性,它包括在ONPC:

public string Artist 
{ 
    get { return artists[0]; } 
} 

public string[] Artists 
{ 
    // get { return artists; } // get string[] is optional 
    set { artists = value; OnPropertyChanged("Artist"); OnPropertyChanged("Artists");} 
} 

提供一些背景用途的样本,你可能会得到更好的答案。

+0

你的代码可以达到setter设置的值。 OP代码没有。 Itøs很难判断这是否意图的一部分,因为意图没有记录。在我看来,离开艺术家的距离会更接近OPs代码。 (也可能认为OP可能不知道你可以拥有一个只写属性,如果我的猜测是关闭的,这可能是重要的或不重要的:)) –

+0

@Rune:可能的,很难描绘这里的用法。这就是为什么我要求一些背景。 –

+0

我完全同意。我主要在高亮度下写下这样的评论:发射吸气剂是可能的(虽然通常很奇怪) –

1

不,这是不可能的。您必须创建另一个属性才能返回其他类型。

0

为什么要这样做。如果你声明了返回类型,那么这个HAS将被返回。

0

不,不可能。它清楚地看到你的代码是非法的,因为你的get访问不履行它的义务返回string[]

// you define the Artists property as a string[], 
// therefore the get accessor must return a string[] 
public string[] Artists 
{ 
    // you are returning only a string 
    get { return artists[0]; }