Tag: 动态

使用参数动态调用dll和方法

基本上我试图通过名称调用一个DLL,实例化一个对象,然后在该DLL中按名称调用一个方法。 我得到了一个“调用目标引发了exception。” 在Method.Invoke期间。 我很确定我的问题是对方法的参数进行类型转换。 我想知道是否有人对此exception有任何意见。 此外,欢迎任何有关如何修改我的方法的建议。 public void calldll(string dllName, string typeName, string methodName, string arguments) { string[] argumentArray = arguments.Split(new char[] { ‘|’ }, StringSplitOptions.None); Assembly assembly = Assembly.LoadFrom(dllName); System.Type type = assembly.GetType(typeName); Object o = Activator.CreateInstance(type); MethodInfo method = type.GetMethod(methodName); ParameterInfo[] parameters = method.GetParameters(); object[] methodParameters = new object[parameters.GetLength(0)]; for (int i = […]

动态MemberExpression

我想创建一个只知道字段名称的MemberExpression; 例如: public static Expression<Func> GenerateMemberExpression(string fieldName) { PropertyInfo fieldPropertyInfo; fieldPropertyInfo = typeof(TModel).GetProperty(fieldName); var entityParam = Expression.Parameter(typeof(TModel), “e”); // {e} var columnExpr = Expression.MakeMemberAccess(entityParam, fieldPropertyInfo); // {e.fieldName} var lambda = Expression.Lambda(columnExpr, entityParam) as Expression<Func>; // {e => e.column} return lambda; } 上述问题是字段类型必须是强类型的。 将“对象”作为字段类型传递不起作用。 有没有办法生成这个? 甚至动态LINQ似乎也不起作用。

C# – 将.NET程序集加载到单独的AppDomain中,以便卸载它

可能重复: 将DLL加载到单独的AppDomain中 将.NET程序集加载到单独的AppDomain中的正确方法是什么,这样您就可以访问其类型/类,但仍然可以卸载它(并重新加载它)。 这是前面讨论的切线: C# – 正确加载程序集,查找类和调用Run()方法

C#深度/嵌套/递归合并dynamic / expando对象

我需要在C#中“合并”2个动态对象。 我在stackexchange上发现的所有内容都只包含了非递归合并。 但我正在寻找一些递归或深度合并的东西,就像jQuery的$.extend(obj1, obj2)函数一样。 两名成员发生碰撞后,应遵守以下规则: 如果类型不匹配,则必须抛出exception并中止合并。 例外:obj2值可能为null,在这种情况下使用obj1的值和类型。 对于普通类型(值类型+字符串),总是首选obj1值 对于非平凡类型,应用以下规则: IEnumerable和IEnumberables简单合并(也许.Concat() ?) IDictionary和IDictionary合并; obj1键在碰撞时具有优先权 必须以递归方式合并Expando和Expando[]类型,而Expando []将始终只具有相同类型的元素 可以假设集合中没有Expando对象(IEnumerabe&IDictionary) 可以丢弃所有其他类型,并且不需要在生成的动态对象中存在 以下是可能合并的示例: dynamic DefaultConfig = new { BlacklistedDomains = new string[] { “domain1.com” }, ExternalConfigFile = “blacklist.txt”, UseSockets = new[] { new { IP = “127.0.0.1”, Port = “80”}, new { IP = “127.0.0.2”, Port = “8080” } } […]

UserControl中的Web控件是否为空?

我已经构建了一个小型用户控件,它本质上是一个DropDownList,带有一些基于Target-Property设置的预设值。 这是代码: public partial class Selector : System.Web.UI.UserControl { public string SelectedValue { get {return this.ddl.SelectedValue; } } public int SelectedIndex { get { return this.ddl.SelectedIndex; } } public ListItem SelectedItem { get { return this.ddl.SelectedItem; } } private string target; public string Target { get { return this.target; } set { this.target = value; […]

从Object创建Dynamic Func

我有一个标准对象,其中我将每个属性转换为func,如果它的值不为null。 public class TestClassCriteria { public bool? ColumnA { get; set; } public bool? ColumnB { get; set; } } 这是我到目前为止所做的,但我很确定我没有正确定义lambda。 这就是我想要实现的目标。 funcs.Add(x => x.ColumnA == criteria.ColumnA) 。 var properties = criteria.GetType().GetProperties(); var funcs = new List<Func>(); foreach (var property in properties) { var propertyName = property.Name; funcs.Add(x => x.GetType().GetProperty(propertyName).Name == criteria.GetType().GetProperty(propertyName).Name); } 它没有崩溃或导致任何错误,它只是不起作用。 您将提供的任何帮助将不胜感激。

使用左列标题创建动态表的最佳方法

我正在创建具有超过20行和列数的动态表,可以根据用户输入进行更改。 第一列是标题,其他列需要使用从Web服务返回的数据进行绑定。 而且几行可以编辑。 当用户点击提交按钮时,需要validation更改的单元格并处理数据。 我创建了ASP.net表并逐个添加了行和单元格。 但这不是可重复使用的方式,是否有任何替代方法可以使用左列作为标题创建可编辑的动态表?

entity framework(代码优先) – 动态构建模型

我有一个类我的域的组件 – “Domains.dll”。 我动态添加到我的DbContext Dbset加载类的程序集。 public class MyContext : DbContext { public MyContext() : base(“DBConnection”){} protected override void OnModelCreating(DbModelBuilder modelBuilder) { Assembly assembly = Assembly.LoadFrom(“Domains.dll”); var entityMethod = typeof(DbModelBuilder).GetMethod(“Entity”); var list = assembly.GetTypes().OrderBy(i => i.GetType().Name); foreach (Type item in list) { entityMethod.MakeGenericMethod(item) .Invoke(modelBuilder, new object[] { }); } } } 接下来,我创建DataBase context.Database.Create(); 这有效但我的域名存在问题。 我有一个父实体的类 public […]

在c#winforms中的控件内水平和垂直对齐动态添加的控件

我有这个程序,动态添加图片框,引用数据库中的总统数。 如何将它们放在combobox中并将图片框对齐到组框内? 如果图片框很多,则组框应该拉伸。 我现在有这个代码: private void Form1_Load(object sender, EventArgs e) { conn.Open(); try { cmd = new SqlCommand(“SELECT COUNT(Position) FROM TableVote WHERE Position='” + “President” + “‘”, conn); Int32 PresCount = (Int32)cmd.ExecuteScalar(); TxtPresCount.Text = PresCount.ToString(); for (int i = 0; i < PresCount; ++i) { GroupBox PresGB = new GroupBox(); { PresGB.Size = new Size(491, […]

在运行时执行C#或VB.NET代码

最近在Codility.com上度过了一段时间,它在我脑海中浮现; 他们如何执行你创建的代码(特别是与C#和VB.NET有关)? 我基本上想知道的是我如何在表单上使用文本框中的某些代码,然后运行该代码? 没有第三方工具,这可能吗? 另外,您如何防止特别与基于Web的此类程序实施相关的安全违规?