如果没有将对象序列化为字节数组,这可能是不可能的,但我希望有一个对象集合,其中唯一的公共属性将是a int和a bool:
public class Speakers : IStereoComponents
{
public int Id { get; set; }
public bool RemoveMe { get; set; }
public string SomethingElse { get; set; }
}
public class Receiver : IStereoComponents
{
public int Id { get; set; }
public bool RemoveMe { get; set; }
public IList<string> Buttons { get; set; }
}
public interface IStereoComponents
{
int Id { get; set; }
bool RemoveMe { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是能够将这些项添加到列表或字典中,并根据Id和RemoveMe字段删除或添加它们.我希望能够做到这样的事情:
foreach(组件中的var组件)component.RemoveMe == true;
是否有捷径可寻?我能想到的唯一方法是使用反射,将所有内容序列化为byte [],Id和RemoveMe属性除外.这将是一件苦差事,我希望有一个奇特的C#4.0这样做?还是一些我完全不知道的东西?
不需要反思!只要做一个List<IStereoComponents>:
var components = new List<IStereoComponents>();
components.Add(new Speakers { Id = 1, RemoveMe = false, SomethingElse = "100W" });
components.Add(new Receiver { Id = 2, RemoveMe = false, Buttons = new List<string>() });
Run Code Online (Sandbox Code Playgroud)
然后,您可以随意循环播放它们:
foreach (var component in components)
{
if (listOfIdsToRemove.Contains(component.Id))
component.RemoveMe = true;
}
Run Code Online (Sandbox Code Playgroud)
接口的美妙之处在于你并不关心对象可以做什么:只要它完成了接口所需的功能,这就足够了.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |