【发布时间】:2012-12-12 03:44:45
【问题描述】:
我正在尝试编写一个将结果转换为接口的 Linq (to Objects) 查询,如下所示:
var data = (from row in CicApplication.Vaporizer473Cache
where row.Coater == coater
select row).Cast<IVaporizerData>();
这似乎是唯一的方法,因为我无法在选择中创建接口的实例。我有两个问题:
演员实际上是如何完成的?它会在源中找到每个属性,并将其值复制到同名的接口属性中吗?
我的界面中有一个不包含在源代码中的属性,但我想在此操作期间以某种方式设置它的值。这可能吗?还是我需要在查询之后,在每个语句中执行它?
如果有帮助,数据源 (Vaporizer473Cache) 的类定义如下所示。界面非常相似。
internal class Vaporizer473
{
/// <summary>
/// Gets or sets the Coater property
/// </summary>
public string Coater { get; set; }
/// <summary>
/// Gets or sets the CoaterTime property
/// </summary>
public DateTime? CoaterTime { get; set; }
/// <summary>
/// Gets or sets the TemperatureLeftTubeA property
/// </summary>
public double? TemperatureLeftTubeA { get; set; }
/// <summary>
/// Gets or sets the TemperatureLeftTubeB property
/// </summary>
public double? TemperatureLeftTubeB { get; set; }
/// <summary>
/// Gets or sets the TemperatureRightTubeA property
/// </summary>
public double? TemperatureRightTubeA { get; set; }
/// <summary>
/// Gets or sets the TemperatureRightTubeB property
/// </summary>
public double? TemperatureRightTubeB { get; set; }
}
【问题讨论】:
-
否;这只会抛出一个
InvalidCastException。