62 var mw = DeclaringType.GetMethod(name, sig,
false);
63 if (mw !=
null && mw.IsStatic == isstatic)
65 mw.IsPropertyAccessor =
true;
81 base(declaringType,
null, fld.Name, fld.Signature,
new ExModifiers(fld.Modifiers, fld.IsInternal),
null)
83 getter = GetMethod(fld.PropertyGetter,
"()" + fld.Signature, fld.IsStatic);
84 setter = GetMethod(fld.PropertySetter,
"(" + fld.Signature +
")V", fld.IsStatic);
87#if !IMPORTER && !FIRST_PASS
89 internal override void ResolveField()
91 getter?.ResolveMethod();
92 setter?.ResolveMethod();
97 internal PropertyBuilder GetPropertyBuilder()
103 internal void DoLink(TypeBuilder tb)
113 pb = tb.DefineProperty(this.
Name, PropertyAttributes.None,
this.FieldTypeWrapper.TypeAsSignatureType,
Type.EmptyTypes);
116 pb.SetGetMethod((MethodBuilder)getter.GetMethod());
120 pb.SetSetMethod((MethodBuilder)setter.GetMethod());
123 DeclaringType.Context.
AttributeHelper.SetModifiers(pb, this.Modifiers, this.IsInternal);
128 protected override void EmitGetImpl(
CodeEmitter ilgen)
132 EmitThrowNoSuchMethodErrorForGetter(ilgen, this.FieldTypeWrapper,
this);
134 else if (getter.IsStatic)
136 getter.EmitCall(ilgen);
140 getter.EmitCallvirt(ilgen);
151 ilgen.Emit(OpCodes.Ldc_I4_0);
152 ilgen.EmitBrtrue(label);
153 ilgen.EmitThrow(
"java.lang.NoSuchMethodError");
154 ilgen.MarkLabel(label);
155 if (!member.IsStatic)
157 ilgen.Emit(OpCodes.Pop);
159 ilgen.Emit(OpCodes.Ldloc, ilgen.DeclareLocal(type.TypeAsLocalOrStackType));
162 protected override void EmitSetImpl(
CodeEmitter ilgen)
168 ilgen.Emit(OpCodes.Pop);
171 ilgen.Emit(OpCodes.Pop);
176 EmitThrowNoSuchMethodErrorForSetter(ilgen,
this);
179 else if (setter.IsStatic)
181 setter.EmitCall(ilgen);
185 setter.EmitCallvirt(ilgen);
196 ilgen.Emit(OpCodes.Ldc_I4_0);
197 ilgen.EmitBrtrue(label);
198 ilgen.EmitThrow(
"java.lang.NoSuchMethodError");
199 ilgen.MarkLabel(label);
200 ilgen.Emit(OpCodes.Pop);
201 if (!member.IsStatic)
203 ilgen.Emit(OpCodes.Pop);
208#if !IMPORTER && !FIRST_PASS
209 internal override object GetValue(
object obj)
213 throw new java.
lang.NoSuchMethodError();
215 return getter.Invoke(obj,
new object[0]);
218 internal override void SetValue(
object obj,
object value)
222 throw new java.
lang.NoSuchMethodError();
224 setter.Invoke(obj,
new object[] { value });
AttributeHelper AttributeHelper
Gets the AttributeHelper associated with this instance of the runtime.