C#仅使用代码添加引用(没有IDE"添加引用"功能)

Joa*_*los 5 c# reflection import obfuscation assemblies

我正在为一个程序编写一个插件,我想把我的代码放在一个DLL中,这样我就可以自由地共享插件而不暴露(赠送)我的代码.

这是我可以访问的基本结构:

using System;
public class Plugin
{
    public void Initialize()
    {
        //do stuff here
        doWork();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我只引用我的代码所在的.cs文件,程序"吃掉"这个插件.现在,我已经把几个逻辑在里面,包括主要的arent直接与功能"初始化()",仅在的doWork()函数,启动整个系统.

现在,我想将所有代码放在DLL中,然后从Initialize(),myDll.doWork()(或类似的东西)中调用.

PS:这个dll将是一个已编译的C#库(它可以被称为动态程序集导入吗?它不会真正动态,因为它会在执行前编译,对吧?)

PS2:这样我还可以添加自定义资源,如表格,图片等,没有太大的困难吧?

PS3:是否有一个免费的工具来保护这种DLL内的代码?(即避免重新设计)

在此先感谢=)

Joa*_*los 7

找到我正在寻找的东西,这里是:

using System.Reflection;
using System.IO;

try
{
    Assembly a = null;

    a = Assembly.LoadFrom(Application.StartupPath startupPath + "MyAssembly.dll"); 

    Type classType = a.GetType("MyNamespace.MyClass");
    object obj = Activator.CreateInstance(classType);
    MethodInfo mi = classType.GetMethod("MyMethod");

    mi.Invoke(obj, null);
}
catch (Exception e)
{                 
    AddLog(e.Message);            
}
Run Code Online (Sandbox Code Playgroud)

  • 如果在应用程序中定义一个接口并让`MyNamespace.MyClass`实现它,你可以将`obj`强制转换为该接口并调用没有反射的方法. (2认同)