12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using ILRuntime.CLR.Method;
- using ILRuntime.Runtime.Enviorment;
- using ILRuntime.Runtime.Intepreter;
- namespace ILRuntime.Runtime.Adapters
- {
- public class AttributeAdapter : CrossBindingAdaptor
- {
- public override Type AdaptorType
- {
- get
- {
- return typeof(Adapter);
- }
- }
- public override Type BaseCLRType
- {
- get
- {
- return typeof(Attribute);
- }
- }
- public override object CreateCLRInstance(Enviorment.AppDomain appdomain, ILTypeInstance instance)
- {
- return new Adapter(appdomain, instance);
- }
- public class Adapter : Attribute, CrossBindingAdaptorType
- {
- ILTypeInstance instance;
- ILRuntime.Runtime.Enviorment.AppDomain appdomain;
- bool isToStringGot;
- IMethod toString;
- public Adapter(ILRuntime.Runtime.Enviorment.AppDomain appdomain, ILTypeInstance instance)
- {
- this.appdomain = appdomain;
- this.instance = instance;
- }
- public ILTypeInstance ILInstance
- {
- get
- {
- return instance;
- }
- }
- public override string ToString()
- {
- if (!isToStringGot)
- {
- isToStringGot = true;
- IMethod m = appdomain.ObjectType.GetMethod("ToString", 0);
- toString = instance.Type.GetVirtualMethod(m);
- }
- if (toString == null || toString is ILMethod)
- {
- return instance.ToString();
- }
- else
- return instance.Type.FullName;
- }
- }
- }
- }
|