投射派生到基础字典

123*_*498 5 c# dictionary

我有2本字典。如何将 DerivedClass 字典分配给 DerivedClass 字典?

下面的代码不起作用?

我怎样才能改变它?

public class BaseClass
{
    public void DoWork() { }
    public int WorkField;
    public int WorkProperty
    {
        get { return 0; }
    }
}

public class DerivedClass : BaseClass
{
    public new void DoWork() { }
    public new int WorkField;
    public new int WorkProperty
    {
        get { return 0; }
    }
}


class Program
{
    static void Main(string[] args)
    {
        var derivedclass = new Dictionary<string, DerivedClass>();
        var baseClass = new Dictionary<string, BaseClass>();

        Dictionary<string, BaseClass> AAA = derivedclass;


        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 5

您不能直接转换字典,但可以创建一个新字典,如下所示:

Dictionary<string, BaseClass> AAA = 
    derivedclass.ToDictionary(
        k => k.Key, 
        v => (BaseClass)v.Value);
Run Code Online (Sandbox Code Playgroud)