本文整理汇总了C#中dnlib.DotNet.FieldDef类的典型用法代码示例。如果您正苦于以下问题:C# FieldDef类的具体用法?C# FieldDef怎么用?C# FieldDef使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
FieldDef类属于dnlib.DotNet命名空间,在下文中一共展示了FieldDef类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AnalyzedFieldTreeNode
public AnalyzedFieldTreeNode(FieldDef analyzedField)
{
if (analyzedField == null)
throw new ArgumentNullException("analyzedField");
this.analyzedField = analyzedField;
this.LazyLoading = true;
}
示例2: AnalyzedFieldAccessTreeNode
public AnalyzedFieldAccessTreeNode(FieldDef analyzedField, bool showWrites) {
if (analyzedField == null)
throw new ArgumentNullException("analyzedField");
this.analyzedField = analyzedField;
this.showWrites = showWrites;
}
示例3: FieldAccessNode
public FieldAccessNode(FieldDef analyzedField, bool showWrites) {
if (analyzedField == null)
throw new ArgumentNullException(nameof(analyzedField));
this.analyzedField = analyzedField;
this.showWrites = showWrites;
}
示例4: GetMemberIcon
static MemberIcon GetMemberIcon(FieldDef field)
{
var access = GetMemberAccess(field);
if (field.DeclaringType.IsEnum && !field.IsSpecialName) {
switch (access) {
case MemberAccess.Public: return MemberIcon.EnumValue;
case MemberAccess.Private: return MemberIcon.EnumValuePrivate;
case MemberAccess.Protected: return MemberIcon.EnumValueProtected;
case MemberAccess.Internal: return MemberIcon.EnumValueInternal;
case MemberAccess.CompilerControlled: return MemberIcon.EnumValueCompilerControlled;
case MemberAccess.ProtectedInternal: return MemberIcon.EnumValueProtectedInternal;
default:
Debug.Fail("Invalid MemberAccess");
goto case MemberAccess.Public;
}
}
if (field.IsLiteral || (field.IsInitOnly && IsDecimalConstant(field))) {
switch (access) {
case MemberAccess.Public: return MemberIcon.Literal;
case MemberAccess.Private: return MemberIcon.LiteralPrivate;
case MemberAccess.Protected: return MemberIcon.LiteralProtected;
case MemberAccess.Internal: return MemberIcon.LiteralInternal;
case MemberAccess.CompilerControlled: return MemberIcon.LiteralCompilerControlled;
case MemberAccess.ProtectedInternal: return MemberIcon.LiteralProtectedInternal;
default:
Debug.Fail("Invalid MemberAccess");
goto case MemberAccess.Public;
}
}
else if (field.IsInitOnly) {
switch (access) {
case MemberAccess.Public: return MemberIcon.FieldReadOnly;
case MemberAccess.Private: return MemberIcon.FieldReadOnlyPrivate;
case MemberAccess.Protected: return MemberIcon.FieldReadOnlyProtected;
case MemberAccess.Internal: return MemberIcon.FieldReadOnlyInternal;
case MemberAccess.CompilerControlled: return MemberIcon.FieldReadOnlyCompilerControlled;
case MemberAccess.ProtectedInternal: return MemberIcon.FieldReadOnlyProtectedInternal;
default:
Debug.Fail("Invalid MemberAccess");
goto case MemberAccess.Public;
}
}
else {
switch (access) {
case MemberAccess.Public: return MemberIcon.Field;
case MemberAccess.Private: return MemberIcon.FieldPrivate;
case MemberAccess.Protected: return MemberIcon.FieldProtected;
case MemberAccess.Internal: return MemberIcon.FieldInternal;
case MemberAccess.CompilerControlled: return MemberIcon.FieldCompilerControlled;
case MemberAccess.ProtectedInternal: return MemberIcon.FieldProtectedInternal;
default:
Debug.Fail("Invalid MemberAccess");
goto case MemberAccess.Public;
}
}
}
示例5: Write
public static ITextOutput Write(ITextOutput output, FieldDef field, Language language) {
output.Write(UIUtils.CleanUpIdentifier(field.Name), TextTokenHelper.GetTextTokenType(field));
output.WriteSpace();
output.Write(':', TextTokenType.Operator);
output.WriteSpace();
language.TypeToString(output, field.FieldType.ToTypeDefOrRef(), false, field);
field.MDToken.WriteSuffixString(output);
return output;
}
示例6: FieldDefOptions
public FieldDefOptions(FieldDef field) {
this.Attributes = field.Attributes;
this.Name = field.Name;
this.FieldSig = field.FieldSig;
this.FieldOffset = field.FieldOffset;
this.MarshalType = field.MarshalType;
this.RVA = field.RVA;
this.InitialValue = field.InitialValue;
this.ImplMap = field.ImplMap;
this.Constant = field.Constant;
this.CustomAttributes.AddRange(field.CustomAttributes);
}
示例7: FieldDefOptions
public FieldDefOptions(FieldDef field) {
Attributes = field.Attributes;
Name = field.Name;
FieldSig = field.FieldSig;
FieldOffset = field.FieldOffset;
MarshalType = field.MarshalType;
RVA = field.RVA;
InitialValue = field.InitialValue;
ImplMap = field.ImplMap;
Constant = field.Constant;
CustomAttributes.AddRange(field.CustomAttributes);
}
示例8: CopyTo
public FieldDef CopyTo(FieldDef field) {
field.Attributes = this.Attributes;
field.Name = this.Name ?? UTF8String.Empty;
field.FieldSig = this.FieldSig;
field.FieldOffset = this.FieldOffset;
field.MarshalType = this.MarshalType;
field.RVA = this.RVA;
field.InitialValue = this.InitialValue;
field.ImplMap = this.ImplMap;
field.Constant = this.Constant;
field.CustomAttributes.Clear();
field.CustomAttributes.AddRange(CustomAttributes);
return field;
}
示例9: GetCallInfo
protected override void GetCallInfo(object context, FieldDef field, out IMethod calledMethod, out OpCode callOpcode) {
var name = field.Name.String;
callOpcode = OpCodes.Call;
if (name.EndsWith("%", StringComparison.Ordinal)) {
callOpcode = OpCodes.Callvirt;
name = name.TrimEnd(new char[] { '%' });
}
byte[] value = Convert.FromBase64String(name);
int methodIndex = BitConverter.ToInt32(value, 0); // 0-based memberRef index
var mr = module.ResolveMemberRef((uint)methodIndex + 1);
if (mr == null || !mr.IsMethodRef)
throw new ApplicationException(string.Format("Invalid MemberRef index: {0}", methodIndex));
calledMethod = mr;
}
示例10: Execute
public static void Execute(ModuleDefMD module)
{
cctor = module.GlobalType.FindStaticConstructor();
Dictionary<FieldDef, Tuple<byte[], int>> fields = new Dictionary<FieldDef,Tuple<byte[], int>>();
List<byte> data = new List<byte>();
int count = 0;
foreach (var method in module.GetTypes().SelectMany(type => type.Methods))
{
if (method.HasBody)
{
List<Instruction> stringInstr = method.Body.Instructions.Where(instr => instr.OpCode == OpCodes.Ldstr).ToList();
for (int i = 0; i < stringInstr.Count; i++)
{
byte[] stringByte = Encoding.UTF8.GetBytes(stringInstr[i].Operand as string);
data.AddRange(stringByte);
FieldDef field = CreateField(module);
fields.Add(field, Tuple.Create(stringByte, count));
method.DeclaringType.Fields.Add(field);
stringInstr[i].OpCode = OpCodes.Ldsfld;
stringInstr[i].Operand = field;
count++;
}
}
}
staticFields = fields;
data = Encrypt(data.ToArray()).ToList();
var dataType = new TypeDefUser("", "", module.CorLibTypes.GetTypeRef("System", "ValueType"));
RenameTask.Rename(dataType);
dataType.Layout = TypeAttributes.ExplicitLayout;
dataType.Visibility = TypeAttributes.NestedPrivate;
dataType.IsSealed = true;
dataType.ClassLayout = new ClassLayoutUser(1, (uint)data.Count);
module.GlobalType.NestedTypes.Add(dataType);
var dataField = new FieldDefUser("", new FieldSig(dataType.ToTypeSig()))
{
IsStatic = true,
HasFieldRVA = true,
InitialValue = data.ToArray(),
Access = FieldAttributes.CompilerControlled
};
module.GlobalType.Fields.Add(dataField);
GlobalDataField = dataField;
RenameTask.Rename(dataField);
NETUtils.listener.OnWriterEvent += OnWriterEvent;
}
示例11: GetCallInfo
protected override void GetCallInfo(object context, FieldDef field, out IMethod calledMethod, out OpCode callOpcode) {
var ctx = (Context)context;
switch (ctx.proxyCreatorType) {
case ProxyCreatorType.CallOrCallvirt:
callOpcode = field.IsFamilyOrAssembly ? OpCodes.Callvirt : OpCodes.Call;
break;
case ProxyCreatorType.CallCtor:
callOpcode = OpCodes.Call;
break;
case ProxyCreatorType.Newobj:
callOpcode = OpCodes.Newobj;
break;
default:
throw new ApplicationException(string.Format("Invalid proxy creator type: {0}", ctx.proxyCreatorType));
}
calledMethod = module.ResolveToken(ctx.methodToken) as IMethod;
}
示例12: GetCallInfo
protected override void GetCallInfo(object context, FieldDef field, out IMethod calledMethod, out OpCode callOpcode) {
callOpcode = OpCodes.Call;
string name = field.Name.String;
uint memberRefRid = 0;
for (int i = name.Length - 1; i >= 0; i--) {
char c = name[i];
if (c == '~') {
callOpcode = OpCodes.Callvirt;
break;
}
int val;
if (specialCharsDict.TryGetValue(c, out val))
memberRefRid = memberRefRid * (uint)specialChars.Length + (uint)val;
}
memberRefRid++;
calledMethod = module.ResolveMemberRef(memberRefRid);
if (calledMethod == null)
Logger.w("Ignoring invalid method RID: {0:X8}, field: {1:X8}", memberRefRid, field.MDToken.ToInt32());
}
示例13: GetDecrypterInfo
Info GetDecrypterInfo(MethodDef method, FieldDef delegateField) {
try {
int index = 0;
var instrs = method.Body.Instructions;
if (instrs[index].OpCode.Code != Code.Ldsfld)
return null;
var field = instrs[index++].Operand as FieldDef;
if (field != delegateField)
return null;
if (!instrs[index].IsLdcI4())
return null;
int offset = instrs[index++].GetLdcI4Value();
if (instrs[index].OpCode.Code != Code.Call && instrs[index].OpCode.Code != Code.Callvirt)
return null;
var calledMethod = instrs[index++].Operand as IMethod;
if (calledMethod.Name != "Invoke")
return null;
if (instrs[index].OpCode.Code == Code.Unbox_Any)
index++;
if (instrs[index++].OpCode.Code != Code.Ret)
return null;
return new Info(method, offset);
}
catch (ArgumentOutOfRangeException) {
return null;
}
}
示例14: DecompileField
public override void DecompileField(FieldDef field, ITextOutput output, DecompilationOptions options)
{
output.WriteReference(IdentifierEscaper.Escape(field.FieldType.GetFullName()), field.FieldType.ToTypeDefOrRef(), TextTokenHelper.GetTextTokenType(field.FieldType));
output.WriteSpace();
output.WriteDefinition(IdentifierEscaper.Escape(field.Name), field, TextTokenHelper.GetTextTokenType(field), false);
var c = field.Constant;
if (c != null) {
output.WriteSpace();
output.Write('=', TextTokenType.Operator);
output.WriteSpace();
if (c.Value == null)
output.Write("null", TextTokenType.Keyword);
else {
switch (c.Type) {
case ElementType.Boolean:
if (c.Value is bool)
output.Write((bool)c.Value ? "true" : "false", TextTokenType.Keyword);
else
goto default;
break;
case ElementType.Char:
output.Write(string.Format("'{0}'", c.Value), TextTokenType.Char);
break;
case ElementType.I1:
case ElementType.U1:
case ElementType.I2:
case ElementType.U2:
case ElementType.I4:
case ElementType.U4:
case ElementType.I8:
case ElementType.U8:
case ElementType.R4:
case ElementType.R8:
case ElementType.I:
case ElementType.U:
output.Write(string.Format("{0}", c.Value), TextTokenType.Number);
break;
case ElementType.String:
output.Write(string.Format("{0}", c.Value), TextTokenType.String);
break;
default:
output.Write(string.Format("{0}", c.Value), TextTokenType.Text);
break;
}
}
}
}
示例15: Analyze
void Analyze(NameService service, ConfuserContext context, ProtectionParameters parameters, FieldDef field)
{
if (field.DeclaringType.IsVisibleOutside() &&
(field.IsFamily || field.IsFamilyOrAssembly || field.IsPublic) &&
!IsVisibleOutside(context, parameters, field))
service.SetCanRename(field, false);
else if (field.IsRuntimeSpecialName)
service.SetCanRename(field, false);
else if (parameters.GetParameter(context, field, "forceRen", false))
return;
else if (field.DeclaringType.IsSerializable && !field.IsNotSerialized)
service.SetCanRename(field, false);
else if (field.IsLiteral && field.DeclaringType.IsEnum)
service.SetCanRename(field, false);
}