在我的代码中,我设置了两个不同的数据源:
_dslocal = new XXX("local"); <- example only
_dsremote = new XXX("remote"); <- example only
稍后在代码中,我使用类似于此的长选择检索数据:
var _rowData = (from question in _dslocal.GetAll() <- example only
... many lines of code
我想做的是允许用户在本地和远程之间切换。一世 不希望有类似的东西:
if ( switch == "local" ) {
var _rowData = (from question in _dslocal.GetAll() <- example only
... many lines of code
} else {
var _rowData = (from question in _dsremote.GetAll() <- example only
... many lines of code
}
也许这不是一个好问题,但我可以这样做:
if ( switch == "local" ) {
var _source = _dslocal;
} else {
var _source = _dsremote;
}
var _rowData = (from question in _source.GetAll() <- example only
... many lines of code
答案 0 :(得分:4)
是的,你绝对可以这样做。还有一些选项可能会使代码更清晰,更易于阅读。在你的情况下,我会创建一个这样的方法:
DataSource GetDataSource(string switch)
{
return switch == "local" ? _dslocal : _dsremote;
}
然后你的LINQ代码可以更清洁:
var _source = GetDataSource(switch);
var _rowData = (from question in _source.GetAll());
我曾经听过Jon Skeet引用指向气球上的字符串之类的对象的引用。任何给定的气球(对象)都可以附加许多字符串(引用)。您可以根据需要随意创建对该对象的引用,但请记住引用本身不是对象,如果您使用引用更改对象,则所有其他引用也将看到更改,因为它们都指向相同的事情。
答案 1 :(得分:1)
更好的是,你可以这样做:
XXX _source;
if ( switch == "local" ) {
_source = new XXX("local");
} else {
_source = new XXX("remote");
}
甚至,或许:
var source = new XXX(switch);