【发布时间】:2014-11-10 05:42:33
【问题描述】:
我在某个位置有一个.cs 文件。如何读取文件并仅从中提取属性?是否可以在不编译代码的情况下提取属性?我尝试使用Assembly.LoadFile() 和Assembly.LoadFrom() 类但不起作用!!!这是示例代码
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel;
using System.Xml.Serialization;
namespace namespace1.Did
{
public class Class1
{
#region Variables
private int _property1 = 14;
private int _property2 = 16;
#endregion
#region Methods
protected override void Initialize()
{
}
protected override void OnBarUpdate()
{
// Have some code in this which uses System.Drawing and System.Drawing.Drawing2D dll's
}
#endregion
#region Properties
[Description("Demo1")]
[GridCategory("Parameters")]
public int Property1
{
get { return _property1; }
set { _property1 = Math.Max(1, value); }
}
[Description("Demo2")]
[GridCategory("Parameters")]
public int Property2
{
get { return _property2; }
set { _property2 = Math.Max(1, value); }
}
#endregion
}
}
实际上我不想编译这段代码,因为如果我使用其他一些 dll,我需要将引用作为参数动态添加到 Csharpcodeprovider 类。如何仅从该 .cs 文件中获取属性?
【问题讨论】:
-
您只需要财产名称吗?或者您是否尝试在代码中创建该类的实例并使用属性?
-
我警告你,我的朋友:这是通往黑暗面的途径之一!您将不得不在文本、cmets、参数、命名等方面遇到很多麻烦,最后它可能不适用于其他情况或 C# 的下一代!您可能实现的最好的东西是现有的 C# 编译器,为什么不使用它并节省大量时间和精力和头痛?
-
“C# roslyn”是您搜索的良好开端...
-
@Alireza。我不想像你说的那样让自己处于“黑暗面”。我们公司对每个类、方法、属性等的命名约定遵循严格和标准的模式。我没有发布类、方法、属性等的实际名称,因为这些名称和代码不会向外界透露,应该严格保密。我希望你明白我的意思。
-
@Alireza 与 Java 与 JavaScript 相关的方式相同 :)
标签: c# .net .net-assembly system.reflection