Tag: 动态

通过字符串比较检查动态对象类型

如果是某种类型,检查基础对象的最佳方法是什么,myObject可以具有“n”级别的层次结构,我想与字符串进行比较,因为myObject是动态的,我没有对车辆的汇编访问权限 a)汽车:车辆 b)BiCycle:TwoWheeler:Vehicle c)卡车:拖车:FourWheeler:车辆 dynamic myObject = someObject; if(myObject is Vehicle) // Works if(myObject is “Vehicle”) //How to ?

向动态创建的复选框添加事件处理程序(aspx,c#)

所以我的问题是我想为动态创建的CheckBox添加一个事件处理程序。 我已经看过其他方法来做到这一点,并决定创建一个包含我的CheckBoxes的动态表是我的最佳选择。 我没有将这些CheckBox添加到控制树,因为我需要手动管理ViewState。 无论哪种方式,我的代码都以各种方式工作,除了我的CheckBox的CheckChanged事件不会触发。 我在pageLoad事件中将此事件处理程序添加到我的CheckBox中,但是,我尝试的任何页面事件似乎都给了我相同的结果: CheckBox chbxLv1 = new CheckBox(); chbxLv1.ID = “DymanicallyCreatedIDForIdentification”; chbxLv1.AutoPostBack = true; chbxLv1.CheckedChanged += new EventHandler(this.checkChanged); /* Way lower in my code */ protected void checkChanged(object sender, EventArgs e) { //Some code goes here which never seems to execute… grrr } 我认为这可能是ViewState最初的一个问题,并对此进行了相当多的研究。 我现在正在考虑添加一个事件处理程序,我正在做一些愚蠢的事情。 我不确定为什么这个事件永远不会发生,但我在向控件添加事件方面有点新意。 我需要代表吗? –Roman

c# – 使用嵌套属性动态生成linq select

目前我们有一个包从字符串中的字段动态生成linq select。 它适用于平面属性,但它不适用于像someObj.NestedObj.SomeField这样的嵌套字段。 我们当前的代码在服务方法中如下所示: _context.Shipments .Where(s => s.Id == request.Id) // it does not matter just an example .Select(request.Fields) .ToPage(request); // ToPage extension comes from a nuget package 请求对象的参数“fields”只是一个用逗号分隔的字符串,包括Shipment对象的属性。 我对Shipment进行了一些重构,我将一些字段分组为一个名为Address的新类,并将其添加到Shipment中,如下所示: // before refactoring class Shipment { // other fields… public string SenderAddress; public string SenderCityName; public string SenderCityId; public string RecipientAddress; public string CityName; public […]

为什么dynamic.ToString()在字符串而不是字符串之间返回一些东西?

我使用从DynamicObject派生的类型作为某些字符串的构建器。 最后,我调用ToString来获得最终结果。 在这一点上,我认为它会给我一个正常的字符串,但这个字符串有点奇怪。 当我在其上使用字符串函数时,它的行为就像一个,但它的行为就像我实际上不知道什么,既不是字符串也不是动态。 这就是我在构建器上实现ToString public class Example : DynamicObject { public override bool TryConvert(ConvertBinder binder, out object result) { if (binder.ReturnType == typeof(string)) { result = ToString(); return true; } result = null; return false; } public override string ToString() { return base.ToString(); } } 当我像这样运行它 dynamic example = new Example(); Console.WriteLine(example.ToString().ToUpper()); 结果是正确的: USERQUERY+EXAMPLE […]

Expression.Call – 调用linq扩展名:FirstOrDefault,Where

我试图动态创建以下,但我在调用扩展方法FirstOrDefault时遇到问题: using(var context = new Entities()) { var list = context.Engines.Include(“Cars”).Select(e => e.Cars.FirstOrDefault()).ToList(); } 我有以下内容 Expression parameter = Expression.Parameter(typeof(Engine), “e”); Expression property = Expression.Property(parameter, “Cars”); 参数= {e} property = {e.Cars} 这些都很好,但是当我尝试调用FirstOrDefault方法时遇到问题: var result = Expression.Call(typeof(Queryable), “FirstOrDefault”, new type[] { typeof(Car)}, property); 我想得到 result = {e.Cars.FirstOrDefault()} 但我得到一个InvalidOperationException 类型’System.Linq.Queryable’上没有通用方法’FirstOrDefault’与提供的类型参数和参数兼容。 如果方法是非generics的,则不应提供类型参数。 任何帮助将非常感激。

这是C#4中动态绑定的漏洞吗?

我在Fabio Maulo的博客上看过一篇非常有趣的post。 如果您不想跳转到url,这是代码和错误。 我定义了一个新的generics类,如下所示: public class TableStorageInitializer where TTableEntity : class, new() { public void Initialize() { InitializeInstance(new TTableEntity()); } public void InitializeInstance(dynamic entity) { entity.PartitionKey = Guid.NewGuid().ToString(); entity.RowKey = Guid.NewGuid().ToString(); } } 请注意,InitializeInstance接受一个参数,该参数的类型为dynamic。 现在要测试这个类,我定义了另一个嵌套在我的主程序类中的类,如下所示: class Program { static void Main(string[] args) { TableStorageInitializer x = new TableStorageInitializer(); x.Initialize(); } private class MyClass { public […]

entity framework自动更新

我尝试将Entity-Framework实现到我的项目中! 我的项目是基于插件的,所以我不知道我必须保存到数据库的哪个对象。 我已经实现了它: public class DatabaseContext : DbContext { public DatabaseContext() : base() { Database.Initialize(true); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { foreach( PluginDto plugin in BackendContext.Current.PluginManager._plugins) { foreach(Type obj in plugin.plugin.getPluginDatabaseObjects()) { Type typ = typeof(EntityTypeConfiguration).MakeGenericType(obj); List l = modelBuilder.GetType().GetMethods().ToList(); MethodInfo m_Entitiy = modelBuilder.GetType().GetMethod(“Entity”).MakeGenericMethod(new Type[] { obj }); var configObj = m_Entitiy.Invoke(modelBuilder, null); MethodInfo […]

如何使用动态对象类型创建通用List

我想创建一个Type对象的通用列表。 我有 … Type type = typeof(Foo); object model = GetModel(); 现在我要创建一个new List((Foo)model) 这可能在C#中吗?

使用Dynamic Expression API选择匿名类型

我正在使用带有LINQ to Entities的动态表达式API( System.Linq.Dynamic )。 我的LINQ查询如下。 var query = this.db.Products.AsQueryable() .Where(strCondition) .OrderBy(“ProductNumber”) .Select(“new(ProductNumber, ProductDescription, ProductCategory.Name)”); 现在我有了“查询”,我不知道如何获得每个字段的值。 string strTemp; foreach (var item in query) { strTemp = item.? } 它是匿名类型,所以我不能真正使用强类型来获取值。 我能做什么? 我选择获取匿名类型字段的原因是因为我需要将ProductCategory.Name字段放入结果中。 有没有更好的方法在Dynamic Expression API的结果中获取ProductCategory.Name? 有人可以帮忙吗?

C#通过定义基类

我试图找到一种从generics基类派生类的方法。 说: sealed public class Final : Base{ } public class Base : T where T : Anything { //<- Generics do not allow this } 在C#中,这似乎不可能。 有没有其他解决方案来实现类似的东西? 我发现了这个StackOverflow问题 ,但它似乎没有解决问题,或者至少我不明白它应该如何解决。 编辑: 我想得到的结果是能够做到这样的事情: Anything[] anything; //Assign some Instances to anything foreach(Final final in anything){ //do something with final }