相关疑难解决方法(0)

将列表框绑定到列表<对象>

将Listbox绑定到对象列表的最简单方法是什么?

c# listbox winforms

54
推荐指数
4
解决办法
16万
查看次数

GetOriginalTypeParameterType throws未将对象引用设置为对象异常的实例

参考:如何将动态用作通用?

public void CheckEntity(int entityId, string entityType = null)
{
 dynamic AnyObject = Activator.CreateInstance("Assembly","Assembly.Models.DbModels." + entityType).Unwrap();
 CheckWithInference(AnyObject, entityId);
}

private static void CheckWithInference<T>(T ignored, int entityId) where T : class
{
 Check<T>(entityId);
}

private static void Check<T>(int entityId) where T : class
{
 using (var gr = new GenericRepository<T>())
 {
 }
}
Run Code Online (Sandbox Code Playgroud)

这进入了CheckEntity(16,"Container");.第一行运行后,使用调试器检查时AnyObject变为空白Assembly.Models.DbModels.Container.如果var AnyType = AnyObject.GetType();使用,则AnyType显示为Assembly.Models.DbModels.Container.但是,当调用CheckWithInference(AnyObject, entityId);使得异常被抛出时.

  • outer:对象引用未设置为对象的实例.
  • inner:Microsoft.CSharp.RuntimeBinder.SymbolTable.GetOriginalTypeParameterType(Type t)+10

    我在这里做了一个自包含的例子 - 但它运行没有错误:(

    注意,这是在asp.net mvc …

  • c# generics dynamic asp.net-mvc-3

    7
    推荐指数
    1
    解决办法
    550
    查看次数

    使用动态设置不受控制(第三方)密封类型的不同属性

    鉴于以下计划:

    using System;
    using System.Collections.Generic;
    
    namespace ConsoleApplication49
    {
        using FooSpace;
    
        class Program
        {
            static void Main(string[] args)
            {
                IEnumerable<FooBase> foos = FooFactory.CreateFoos();
    
                foreach (var foo in foos)
                {             
                    HandleFoo(foo);
                }
            }
    
            private static void HandleFoo(FooBase foo)
            {
                dynamic fooObject = foo;
                ApplyFooDefaults(fooObject);
            }
    
            private static void ApplyFooDefaults(Foo1 foo1)
            {
                foo1.Name = "Foo 1";
    
                Console.WriteLine(foo1);
            }
    
            private static void ApplyFooDefaults(Foo2 foo2)
            {
                foo2.Name        = "Foo 2";
                foo2.Description = "SomeDefaultDescription";
    
                Console.WriteLine(foo2);
            }
    
            private static void ApplyFooDefaults(Foo3 foo3)
            {
                foo3.Name    = "Foo 3"; …
    Run Code Online (Sandbox Code Playgroud)

    .net c# oop dynamic c#-4.0

    5
    推荐指数
    1
    解决办法
    192
    查看次数

    标签 统计

    c# ×3

    dynamic ×2

    .net ×1

    asp.net-mvc-3 ×1

    c#-4.0 ×1

    generics ×1

    listbox ×1

    oop ×1

    winforms ×1