我找到了一个完全符合我喜欢的代码: View/edit ID3 data for MP3 files
...
class a{
public ? getContent(){
string Title = Encoding.Default.GetString(tag.Title);
string Artist = Encoding.Default.GetString(tag.Artist);
string Album = Encoding.Default.GetString(tag.Album);
}
}
class form1{
button1.click()
{
? = a.getContent
text1.text = ?.Title;
text2.Text = ?.Artist;
}
}
Simucal将结果打印到控制台,但我希望有一个winform获取此输入并将其放入一些文本框中。我想我可以用数组来做,但我想有更好的方法以mvvm的方式做到这一点(我知道我的问题可能毫无意义,但我喜欢以正确的方式做到这一点)......
请帮助:)
答案 0 :(得分:1)
在这种情况下,您只需返回包含该数据的结果对象:
public ContentData getContent()
{
return new ContentData
{
Title = "Hello World",
Artist = "Some Other String"
};
}
ContentData data = someobject.getContent();
text1.Text = data.Title;
// etc
你只需制作自己的类型。
答案 1 :(得分:1)
是否有某些原因您无法使用类来封装该数据?
class TagData
{
public string Title {get; set; }
public string Artist {get; set; }
public string Album {get; set; }
}
class a{
public TagData getContent(){
return new TagData
{
Title = Encoding.Default.GetString(tag.Title),
Artist = Encoding.Default.GetString(tag.Artist),
Album = Encoding.Default.GetString(tag.Album)
};
}
}
class form1{
button1.click()
{
var tagData = a.getContent
text1.text = tagData.Title;
text2.Text = tagData.Artist;
}
}
或者,如果你想对它不那么'安全',你可以把它全部打包成一个词典:
class a{
public Dictionary<string, string> getContent(){
var tagData = new Dictionary<string, string>();
tagData["Title"] = Encoding.Default.GetString(tag.Title);
tagData["Artist"] = Encoding.Default.GetString(tag.Artist);
tagData["Album"] = Encoding.Default.GetString(tag.Album);
return tagData;
}
}
class form1{
button1.click()
{
var tagData = a.getContent();
text1.Text = tagData["Title"];
text2.Text = tagData["Artist"];
}
}
答案 2 :(得分:0)
使用您想要的属性创建一个名为Tags
的类或类似的类。返回具有属性集的实例。 Winforms不能很好地完成MVVM。