Tag: 动态

这是动态的错误吗?

在generics类上使用dynamic实现动态分派,并且generics类型参数是另一个类上的私有内部类时,运行时绑定程序会引发exception。 例如: using System; public abstract class Dispatcher { public T Call(object foo) { return CallDispatch((dynamic)foo); } protected abstract T CallDispatch(int foo); protected abstract T CallDispatch(string foo); } public class Program { public static void Main() { TypeFinder d = new TypeFinder(); Console.WriteLine(d.Call(0)); Console.WriteLine(d.Call(“”)); } private class TypeFinder : Dispatcher { protected override CallType CallDispatch(int […]

C#:如何对动态对象执行空检查

如何对动态对象执行空检查 ? 伪代码: public void Main() { dynamic dynamicObject = 33; if(true) { // Arbitrary logic dynamicObject = null; } Method(dynamicObject); } public void Method(dynamic param) { // TODO: check if the content of ‘param’ is equal to null }

使用IronPython在C#中运行特定的Python函数

到目前为止,我有一个简单的类包装python引擎(IronPython)供我使用。 虽然代码看起来很大,但它非常简单,所以我在这里复制它以便更清楚地解决我的问题。 这是代码: public class PythonInstance { ScriptEngine engine; ScriptScope scope; ScriptSource source; public PythonInstance() { engine = Python.CreateEngine(); scope = engine.CreateScope(); } public void LoadCode(string code) { source = engine.CreateScriptSourceFromString(code, Microsoft.Scripting.SourceCodeKind.Statements); source.Compile(); } public void SetVariable(string key, dynamic variable) { scope.SetVariable(key, variable); } public void RunCode() { source.Execute(scope); } public void CallFunction(string function) { […]

.net DynamicObject实现,为缺少的属性而不是RunTimeBinderException返回null

我希望能够做类似以下的事情: dynamic a = new ExpandoObject(); Console.WriteLine(a.SomeProperty ?? “No such member”); 但那扔了 RunTimeBinderException: ‘System.Dynamic.ExpandoObject’ does not contain a definition for ‘Throw’ 您是否知道DynamicObject的实现会为缺少的定义返回null,或者有关如何创建一个的教程? 非常感谢!

C#:如何让用户控件正确自动resize

我有一个UserControl ,它由Label (Top), FlowLayoutPanel (Fill,TopDown流程和无包装)和Panel (Bottom)组成。 用户控件根据获取的内容列表创建许多控件,并将它们添加到FlowLayoutPanel 。 如何让这个UserControl正确调整自身大小,以便FlowLayoutPanel没有任何滚动条? 我试图在FlowLayoutPanel和UserControl本身上使用AutoSize和AutoSizeMode各种组合,但我似乎无法让它工作。 要么我最终得到的东西根本没有自我调整,要么它不会变得足够大或者它被压缩到几乎没有。

为什么不能将anon函数与动态参数一起使用?

刚刚遇到这个问题 匿名函数或方法组不能用作动态绑定操作的组成值。 当试图做 static R ifNotNull(dynamic o, Func returnFunc, R otherwise) { return ReferenceEquals(null, o) ? otherwise : returnFunc(o); } 并使用它 dynamic firstAddress = …; return ifNotNull(firstAddress, (a) => a.address_1, null) 现在大多数关于动态的限制对我来说都是有意义的 – 你不能使用扩展方法,因为编译器应该如何决定将哪个静态编译成? 但我不知道这里。 困惑在哪里? 究竟是什么限制?

使用AssemblyBuilder构建资源程序集

场景:我想创建作为资源程序集的附属程序集。 该程序集仅在其中编译资源(ResourceWriter)。 目标是在VS之外创建资源程序集,并将它们添加到应用程序中,并将其添加到我的C#应用​​程序中 Atm我使用AssemblyBuilder来创建程序集。 它有效,但没有关于存储的程序集的信息。 没有cultureinfo,密钥或其他任何东西。 该应用程序没有使用Missing Manfifest Resource Exception。 🙁 如果可能的话,我想继续使用AssemblyBuilder或使用CodeDomProvider。 问题 :为我的应用添加新的卫星组件有什么必要? 是否有足够的文件夹(en-US)和一个包含en-US资源的程序集? 问题2 :是否可以向程序集提供一些元信息,如版本,文化? 问题3 :是否足以将资源添加到程序集中? 码: AssemblyBuilder builder = AppDomain.CurrentDomain.DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.RunAndSave, resourceFolder); builder.AddResourceFile(name, assemblyFileName); builder.Save(assemblyName.Name); 对于任何forms的帮助,我将不胜感激。 提前致谢

在.NET中使用动态类型的性能成本

在.NET中使用dynamic vs object的性能成本是多少? 比方说,我有一个接受任何类型参数的方法。 例如 public void Foo(object obj) { } 要么 public void Foo(dynamic obj) { } ILSpy告诉我,在使用动态代码时,编译器必须插入代码块来处理动态。 因此,我想知道是否建议使用动态代替对象,以及这种用法以性能为代价的程度是多少?

为什么c#编译器在具有动态参数的调用站点检查方法的“静态”?

为什么C#编译器不告诉我这段代码无效? class Program { static void Main(string[] args) { dynamic d = 1; MyMethod(d); } public void MyMethod(int i) { Console.WriteLine(“int”); } } 对MyMethod的调用在运行时失败,因为我试图从静态方法调用非静态方法。 这是非常合理的,但为什么编译器在编译时不认为这是一个错误? 以下内容无法编译 class Program { static void Main(string[] args) { dynamic d = 1; MyMethod(d); } } 所以尽管动态调度,编译器确实检查MyMethod存在。 为什么不validation“静态”?

动态列表类型

是否可以创建一个新的List ,其中T是在运行时动态设置的? 干杯