C# 使用反射为文本着色

C# 使用反射为文本着色,c#,reflection,editor,C#,Reflection,Editor,我正在尝试制作一个简单的文本编辑器,实时为文本着色我还必须为此使用DLL和反射。 我想在用户键入时为文本着色。因此,我有一个复选框。如果选中此选项,则用户键入时文本将被着色(实时) 我已经写了一个DLL文件来实现这一点 不管怎样,我对反思这件事还是很陌生的 问题是: 我想请教你们的专业意见,我写的东西是否可以称为“使用反射”?如果不是,你能告诉我怎么了吗 这是我的代码(我从中删除了许多内容,因此代码将反映问题,但可能会有剩余) 这是DLL文件 using System; using Syst

我正在尝试制作一个简单的文本编辑器,实时为文本着色我还必须为此使用DLL和反射。 我想在用户键入时为文本着色。因此,我有一个复选框。如果选中此选项,则用户键入时文本将被着色(实时)

我已经写了一个DLL文件来实现这一点

不管怎样,我对反思这件事还是很陌生的

  • 问题是:
我想请教你们的专业意见,我写的东西是否可以称为“使用反射”?如果不是,你能告诉我怎么了吗

这是我的代码(我从中删除了许多内容,因此代码将反映问题,但可能会有剩余)

这是DLL文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace MyPlugIn
{
    public class colorclass
    {
        public void color(string Text, Object Hndl_Text, Object Hndl_Err, RichTextBox box,int flag)
        {
            if (flag == 1)
            {
                int start = box.TextLength;
                int end = box.TextLength;

                //Textbox may transform chars, so (end-start) != text.Length
                box.Select(start, end - start);
                {
                    box.SelectionColor = Color.Blue;
                }
                box.SelectionLength = 0; // clear
            }
        }
    }
}

是的,您的代码使用反射。这些行是一个示例:

Type t = a.GetType("MyPlugIn.colorclass");
MethodInfo mi = t.GetMethod("color");
Object obj = Activator.CreateInstance(t);

无论是最佳方法还是非最佳方法,或者是此任务所必需的,这都是另一个主题。

反射与文本着色无关。@SLaks您是对的,但OP使用
MethodInfo
Assembly.LoadFrom()
-所以我想说,着色的调用是通过反射完成的。。。无论如何,我宁愿选择插件模式来实现这一点(例如:)@SLaks可能没有,但他正在使用反射:
typet=a.GetType(“MyPlugIn.colorclass”);MethodInfo mi=t.GetMethod(“颜色”);Object obj=Activator.CreateInstance(t)
Type t = a.GetType("MyPlugIn.colorclass");
MethodInfo mi = t.GetMethod("color");
Object obj = Activator.CreateInstance(t);