[DataContract]
public class SearchCriteria
{
[DataMember]
public string CountryID { get; set; }
}
[DataContract]
public class CitySearchCriteria: SearchCriteria
{
[DataMember]
public string CityID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在我的MVC控制器操作中创建了一个SearchCriteria实例,并尝试将其转换为CitySearchCriteria.
SearchCriteria searchCriteria = new SearchCriteria();
searchCriteria.CountryID = "1";
CitySearchCriteria citySearchCriteria = searchCriteria as CitySearchCriteria;
Run Code Online (Sandbox Code Playgroud)
上述语句后面的"citySearchCriteria"对象显示NULL值.我希望它显示属性,CountryID和CityID,其中CountryID已填充,CityID为空......但它将对象设置为NULL.
这可能是什么解决方案?DataContract有什么用呢?
评论建议,你不能将基数转换为派生:但实际上,我已经在我的视图中成功完成了这一点,它只是在控制器操作中不起作用:
CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;
Run Code Online (Sandbox Code Playgroud)
这是成功转换的,为什么类似的东西不能在控制器动作中工作呢?
我使用第三方控件将一些数据导出为不同的格式.该控件有一个属性ExportSettings.但它是只读的.
我要手动设置它的属性,如
ctrl.ExportSettings.Paging = false;
ctr.ExportSettings.Background = Color.Red;
Run Code Online (Sandbox Code Playgroud)
所以我从用户那里得到了ExportSettings对象,我想把它设置为控件.
如何将其所有成员值复制到用户控件?
看来我们不能在C#泛型类中轻松调用类型转换运算符.这是代码.为什么?
T006最终归档我们的目标.
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Reflection;
using System.Linq;
namespace ConsoleApplication1
{
class vec<T, T2> : List<T> where T : class
{
public vec(IEnumerable<T2> other)
{
//Converter<T2, T> cvt = (v) => (T)v; // T004 failed, try defined function dynamicly, cannot compile, too.
// T006 pass, client happy, we not happy, but anyway passed, performance may not happy.
var conversionOperator = typeof(T).GetMethods(BindingFlags.Static | BindingFlags.Public)
.Where(m => m.Name == "op_Explicit" || m.Name == "op_Implicit") …Run Code Online (Sandbox Code Playgroud)