CodeMemberField обрезает словарь - PullRequest
0 голосов
/ 18 марта 2020

Проблема

private Dictionary<String, Action<Writer, Queue<DataSerializer> (CUTOFF HERE)
Dictionary<String, Action<Writer, Queue<DataSerializer>, System.Int32, SendTo, Peer, Peer[]>>;

Я создал Fiddle, чтобы показать точную проблему, с которой я сталкиваюсь, я знаю, что на внешние ссылки смотрят свысока, но по большей части я показал свою работу и позволил выполнить приложение с легкостью. Конечным результатом является словарь обрезки после очереди, я не уверен, почему это происходит, но это так.

Fiddle

using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.IO;
using Microsoft.CSharp;
using System.Text;

public class Program
{
    private static CodeCompileUnit compileUnit;
    private static CodeNamespace unitNamespace;
    private static CodeTypeDeclaration classDefinition;

    public static void Main()
    {
        Console.WriteLine("Started Compile");
        compileUnit = new CodeCompileUnit();
        unitNamespace = new CodeNamespace("DarkSide");
        classDefinition = new CodeTypeDeclaration("ExampleOfCuttoff");
        classDefinition.Attributes = (MemberAttributes)24578;
        SetupDocument();
        CreateDictionary();
        Compile();
    }
    public static void SetupDocument()
    {
        unitNamespace.Types.Add(classDefinition);
        unitNamespace.Imports.Add(new CodeNamespaceImport("System.Net"));
        unitNamespace.Imports.Add(new CodeNamespaceImport("System"));
        unitNamespace.Imports.Add(new CodeNamespaceImport("System.Collections.Generic"));
        compileUnit.Namespaces.Add(unitNamespace);
    }
    private static void CreateDictionary()
    {
        var send = new CodeMemberField("Dictionary<String, Action<Writer, Queue<DataSerializer>, System.Int32, SendTo, Peer, Peer[]>> sendMethods =", 
                                  "Dictionary<String, Action<Writer, Queue<DataSerializer>, System.Int32, SendTo, Peer, Peer[]>>");
        send.Attributes = MemberAttributes.Private;
        classDefinition.Members.Add(send);
    }
    private static void Compile()
    {
        var result = new StringBuilder();
        var writer = new StringWriter(result);
        var cCompiler = new CSharpCodeProvider();
        cCompiler.GenerateCodeFromCompileUnit(compileUnit, writer, new CodeGeneratorOptions());
        writer.Dispose();
        Console.WriteLine("Result: "+ result);
    }
}

1 Ответ

0 голосов
/ 18 марта 2020

Я собираюсь сделать вывод, что CodeMemberField обрезает действия по трем параметрам. В свою очередь, я должен поместить тип отправки в структуру и передать его в качестве третьего параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...