@manhng

Welcome to my blog!

Assembly tools

May 31, 2021 11:54

Assembly tools (edit)

https://manhng.com/blog/reflection-load-all-classes-properties-constructors/

https://manhng.com/blog/get-all-assemblies/

https://manhng.com/blog/reflection/

https://manhng.com/blog/decompiler/

https://manhng.com/blog/applied-microsoft-net-framework-programming/

https://manhng.com/blog/benchmarking-with-stopwatch/

Code

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;

string[] pathToDLLs = System.IO.Directory.GetFiles(folderPath, "*.dll", SearchOption.AllDirectories);

string reportFolderPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory), "Report");

File.WriteAllText(Path.Combine(reportFolderPath, "DEF.txt"), sb.ToString(), Encoding.UTF8);
File.WriteAllText(Path.Combine(reportFolderPath, $"DEF_{DateTime.Now.ToString("yyyyMMddHHmmm")}.txt"), sb.ToString(), Encoding.UTF8);

Process.Start(@"C:\Program Files\Notepad++\notepad++.exe", Path.Combine(reportFolderPath, "DEF.txt"));

//ProductName: System.Reflection.AssemblyProductAttribute
//ProductVersion: System.Reflection.AssemblyInformationalVersionAttribute

//FileDescription: System.Reflection.AssemblyTitleAttribute
//FileVersion: System.Reflection.AssemblyVersionAttribute

//System.Resources.ResourceManager
//System.Reflection.AssemblyCultureAttribute

//Add references (*.dll) to the project automatically ( programmatically )
const string ReferenceInclude = "<Reference Include=\"{0}\"><HintPath>{1}</HintPath></Reference>";
foreach (string pathToDLL in Directory.GetFiles(folderPath, "*.dll"))
{
Assembly assembly = Assembly.LoadFile(pathToDLL);
string nameSpace = assembly.GetName().Name;

Type aType = assembly.GetType($"{nameSpace}.{className}");
}

foreach (string dll in Directory.GetFiles(folderPath, "*.dll"))
{
if (!string.IsNullOrWhiteSpace(dll))
{
string fileNameWithOutExtension = Path.GetFileNameWithoutExtension(dll);
sb.AppendLine(string.Format(ReferenceInclude, fileNameWithOutExtension, dll));

//if (fileNameWithOutExtension.StartsWith("MyNamespace") && !fileNameWithOutExtension.EndsWith(".cs"))
//{
// sb.AppendLine(string.Format(ReferenceInclude, fileNameWithOutExtension, dll));
//}
}
}

Reflection

December 20, 2017 13:49

Reflection in .NET

http://www.c-sharpcorner.com/uploadfile/keesari_anjaiah/reflection-in-net/

https://www.codeproject.com/Articles/55710/Reflection-in-NET

System.Reflection

http://aptech.vn/kien-thuc-tin-hoc/c-ki-thuat-reflection-trong-net.html

http://www.pcworld.com.vn/articles/cong-nghe/ung-dung/2006/02/1188684/khao-sat-dong-assembly-va-kieu-voi-system-reflection/

https://daynhauhoc.com/t/chia-se-ky-thuat-reflection/

http://www.oktot.com/reflection-trong-csharp-2/

  • Assembly là gì?
  • Lớp Assembly là gì?
  • System.Reflection.Assembly có thể được coi là một kiểu mô phỏng chi tiết về các Assembly.
  • System.Type: một abstract class đại diện cho các kiểu dữ liệu (interface, lớp, mảng, giá trị...)
  • System.Activator

    Say you have a class called MyFancyObject like this one below:

    class MyFancyObject
    {
        public int A { get;set;}
    }

    It lets you turn:

    String ClassName = "MyFancyObject";

    Into

    MyFancyObject obj;

    Using

    obj = (MyFancyObject)Activator.CreateInstance("MyAssembly", ClassName))

    and can then do stuff like:

    obj.A = 100;

    That's its purpose. It also has many other overloads such as providing a Type instead of the class name in a string. Why you would have a problem like that is a different story. Here's some people who needed it:

Làm sao để thay đổi giá trị của 1 biến khi người dùng nhập tên biến vào lúc chương trình đang thực thi?

Làm sao để tạo một instance của form nếu chỉ sử dụng tên form?

Làm sao để thực thi một phương thức dựa vào tên mà người dùng truyền vào?

Làm sao để hiển thị thông tin các assembly, namespace, type,… trong C#?

Làm sao để lấy thông tin của kiểu dữ liệu? ConstructorInfo, EventInfo, FieldInfo, InterfaceInfo, MemberInfo, MethodInfo, PropertyInfo.

Làm sao để tạo ra đối tượng với constructor không tham số và constructor có tham số?

Kiến thức khác

Giúp bạn tối ưu hóa một chương trình C#

http://aptech.vn/kien-thuc-tin-hoc/giup-ban-toi-uu-hoa-mot-chuong-trinh-c.html

Truyền dữ liệu giữa các Form

http://aptech.vn/kien-thuc-tin-hoc/c-truyen-du-lieu-giua-cac-form.html

Categories

Recent posts