我需要一种区分用户传递到自定义控件的类对象的方法。这样做的原因是,我可以处理后端的某些逻辑,完全被用户提取和无法控制。用户可以像这样传递对象集合......
<Grid>
<nexus:NexusEditor
SourceTeams="{Binding Teams}"
SourcePlayers="{Binding Players}"
SourceLocations="{Binding Locations}"/>
</Grid>
如果我要在我的自定义控件中浏览所有这些对象,我需要一种标记传入对象的方法,以便我知道哪些源已经通过。
答案 0 :(得分:0)
这在运行时不容易完成,可以说是C#中的错误设计。还有其他方法可以解决这个问题。例如,您可以围绕Connection
类创建一个包装器,并将Connection
的实例注入其中。然后ConnectionWrapper可以继承AbstractBase
public class ConnectionWrapper: AbstractBase
{
public ConnectionWrapper(Connection connnection)
{
}
private override int _type {get; set;}
}
答案 1 :(得分:0)
在不了解更多关于你的要求的情况下给出具体的东西真的很难,但我认为这样的事情可能会做你想要的:
public interface ITyped
{
int Type { get; }
}
public class Connection : ITyped
{
public string Name { get; set; } // NOTE: public setters are Bad Code(tm) for anything but the dumbest DTO objects
public int Type { get { return 1; } } // specify type for connections here
}
用法:
foreach (var typed in connections.Concat<ITyped>(groups))
{
DoStuffWith(typed);
}