bil*_*bob 5 c# reflection reflection.emit
我开始在我的项目中使用反射.
当我创建一个类型并且我想指定TypeAttributes时,我有两个选项:
AnsiClass和Class.它们在枚举中都设置为0 TypeAttributes.
public enum TypeAttributes
{
// LPTSTR is interpreted as ANSI.
AnsiClass = 0,
//
// Summary:
// Specifies that the type is a class.
Class = 0,
...
Run Code Online (Sandbox Code Playgroud)
1-什么是ANSI Class(我注意到了,它与之相关LPTSTR,但我不太了解)?
2- 我使用时AnsiClassa和a 之间的区别是什么.ClassReflection
编辑
这是在Reflection中指定TypeAttributes的示例:
TypeBuilder typeBuilder = mbuilder.DefineType("DataRow", TypeAttributes.Public | TypeAttributes.AnsiClass | TypeAttributes.Class);
Run Code Online (Sandbox Code Playgroud)
我有两个选择:AnsiClass 和 Class
不,那些是正交的。 AnsiClass告诉编组器所有字符串属性都将编组为 ANSI 字符串。该类别中的其他选项是:
UnicodeClass
AutoClass
CustomFormatClass
Run Code Online (Sandbox Code Playgroud)
Class表明他们输入的是 a class。该组中唯一的其他选项是Interface. 有趣的是,当你查看框架类型的属性时,类、结构体和接口都有该Class属性,所以我不确定它的用途。
typeof(object).Attributes.Dump();
typeof(int).Attributes.Dump();
typeof(ICloneable).Attributes.Dump();
Run Code Online (Sandbox Code Playgroud)
输出:
AutoLayout, AnsiClass, Class, Public, Serializable, BeforeFieldInit
AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, Serializable, BeforeFieldInit
AutoLayout, AnsiClass, Class, Public, ClassSemanticsMask, Abstract
Run Code Online (Sandbox Code Playgroud)