本文整理汇总了C#中Mono.CSharp.MemberCache类的典型用法代码示例。如果您正苦于以下问题:C# MemberCache类的具体用法?C# MemberCache怎么用?C# MemberCache使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MemberCache类属于Mono.CSharp命名空间,在下文中一共展示了MemberCache类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: LoadMembers
public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
{
throw new NotImplementedException ();
}
开发者ID:Gobiner,项目名称:ILSpy,代码行数:4,代码来源:import.cs
示例2: LoadMembers
public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
{
throw new NotSupportedException ("Not supported for compiled definition " + GetSignatureForError ());
}
开发者ID:fvalette,项目名称:mono,代码行数:4,代码来源:class.cs
示例3: AddInterface
public void AddInterface (MemberCache baseCache)
{
if (baseCache.member_hash.Count > 0)
AddCacheContents (baseCache);
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:5,代码来源:decl.cs
示例4: SetupCache
/// <summary>
/// Bootstrap this member cache by doing a deep-copy of our base.
/// </summary>
static Hashtable SetupCache (MemberCache base_class)
{
if (base_class == null)
return new Hashtable ();
Hashtable hash = new Hashtable (base_class.member_hash.Count);
IDictionaryEnumerator it = base_class.member_hash.GetEnumerator ();
while (it.MoveNext ()) {
hash.Add (it.Key, ((ArrayList) it.Value).Clone ());
}
return hash;
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:16,代码来源:decl.cs
示例5: AddCacheContents
/// <summary>
/// Add the contents of `cache' to the member_hash.
/// </summary>
void AddCacheContents (MemberCache cache)
{
IDictionaryEnumerator it = cache.member_hash.GetEnumerator ();
while (it.MoveNext ()) {
ArrayList list = (ArrayList) member_hash [it.Key];
if (list == null)
member_hash [it.Key] = list = new ArrayList ();
ArrayList entries = (ArrayList) it.Value;
for (int i = entries.Count-1; i >= 0; i--) {
CacheEntry entry = (CacheEntry) entries [i];
if (entry.Container != cache.Container)
break;
list.Add (entry);
}
}
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:21,代码来源:decl.cs
示例6: InitializeMemberCache
//
// Populates type parameter members using type parameter constraints
// The trick here is to be called late enough but not too late to
// populate member cache with all members from other types
//
protected override void InitializeMemberCache (bool onlyTypes)
{
cache = new MemberCache ();
if (ifaces != null) {
foreach (var iface_type in Interfaces) {
cache.AddInterface (iface_type);
}
}
}
开发者ID:ikvm,项目名称:mono,代码行数:14,代码来源:generic.cs
示例7: DefineMembers
//.........这里部分代码省略.........
if ((iface.ModFlags & Modifiers.NEW) == 0)
iface.DefineMembers (this);
else
Error_KeywordNotAllowed (iface.Location);
}
if (RootContext.WarningLevel > 1){
Type ptype;
//
// This code throws an exception in the comparer
// I guess the string is not an object?
//
ptype = TypeBuilder.BaseType;
if (ptype != null){
defined_names = (MemberInfo []) FindMembers (
ptype, MemberTypes.All & ~MemberTypes.Constructor,
BindingFlags.Public | BindingFlags.Instance |
BindingFlags.Static, null, null);
Array.Sort (defined_names, mif_compare);
}
}
if (constants != null)
DefineMembers (constants, defined_names);
if (fields != null)
DefineMembers (fields, defined_names);
if (this is Class){
if (instance_constructors == null){
if (default_constructor == null)
DefineDefaultConstructor (false);
}
if (initialized_static_fields != null &&
default_static_constructor == null)
DefineDefaultConstructor (true);
}
if (this is Struct){
//
// Structs can not have initialized instance
// fields
//
if (initialized_static_fields != null &&
default_static_constructor == null)
DefineDefaultConstructor (true);
if (initialized_fields != null)
ReportStructInitializedInstanceError ();
}
Pending = PendingImplementation.GetPendingImplementations (this);
//
// Constructors are not in the defined_names array
//
if (instance_constructors != null)
DefineMembers (instance_constructors, null);
if (default_static_constructor != null)
default_static_constructor.Define (this);
if (methods != null)
DefineMembers (methods, defined_names);
if (properties != null)
DefineMembers (properties, defined_names);
if (events != null)
DefineMembers (events, defined_names);
if (indexers != null) {
DefineIndexers ();
} else
IndexerName = "Item";
if (operators != null){
DefineMembers (operators, null);
CheckPairedOperators ();
}
if (enums != null)
DefineMembers (enums, defined_names);
if (delegates != null)
DefineMembers (delegates, defined_names);
#if CACHE
if (TypeBuilder.BaseType != null)
parent_container = TypeManager.LookupMemberContainer (TypeBuilder.BaseType);
member_cache = new MemberCache (this);
#endif
return true;
}
开发者ID:emtees,项目名称:old-code,代码行数:101,代码来源:class.cs
示例8: Define
public override bool Define ()
{
if (IsGeneric) {
foreach (TypeParameter type_param in TypeParameters) {
if (!type_param.Resolve (this))
return false;
}
foreach (TypeParameter type_param in TypeParameters) {
if (!type_param.DefineType (this))
return false;
}
}
member_cache = new MemberCache (TypeManager.multicast_delegate_type, this);
// FIXME: POSSIBLY make this static, as it is always constant
//
Type [] const_arg_types = new Type [2];
const_arg_types [0] = TypeManager.object_type;
const_arg_types [1] = TypeManager.intptr_type;
const MethodAttributes ctor_mattr = MethodAttributes.RTSpecialName | MethodAttributes.SpecialName |
MethodAttributes.HideBySig | MethodAttributes.Public;
ConstructorBuilder = TypeBuilder.DefineConstructor (ctor_mattr,
CallingConventions.Standard,
const_arg_types);
ConstructorBuilder.DefineParameter (1, ParameterAttributes.None, "object");
ConstructorBuilder.DefineParameter (2, ParameterAttributes.None, "method");
//
// HACK because System.Reflection.Emit is lame
//
IParameterData [] fixed_pars = new IParameterData [] {
new ParameterData ("object", Parameter.Modifier.NONE),
new ParameterData ("method", Parameter.Modifier.NONE)
};
AParametersCollection const_parameters = new ParametersImported (
fixed_pars,
new Type[] { TypeManager.object_type, TypeManager.intptr_type });
TypeManager.RegisterMethod (ConstructorBuilder, const_parameters);
member_cache.AddMember (ConstructorBuilder, this);
ConstructorBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
//
// Here the various methods like Invoke, BeginInvoke etc are defined
//
// First, call the `out of band' special method for
// defining recursively any types we need:
if (!Parameters.Resolve (this))
return false;
//
// Invoke method
//
// Check accessibility
foreach (Type partype in Parameters.Types){
if (!IsAccessibleAs (partype)) {
Report.SymbolRelatedToPreviousError (partype);
Report.Error (59, Location,
"Inconsistent accessibility: parameter type `{0}' is less accessible than delegate `{1}'",
TypeManager.CSharpName (partype),
GetSignatureForError ());
return false;
}
}
ReturnType = ReturnType.ResolveAsTypeTerminal (this, false);
if (ReturnType == null)
return false;
ret_type = ReturnType.Type;
if (!IsAccessibleAs (ret_type)) {
Report.SymbolRelatedToPreviousError (ret_type);
Report.Error (58, Location,
"Inconsistent accessibility: return type `" +
TypeManager.CSharpName (ret_type) + "' is less " +
"accessible than delegate `" + GetSignatureForError () + "'");
return false;
}
CheckProtectedModifier ();
if (RootContext.StdLib && TypeManager.IsSpecialType (ret_type)) {
Method.Error1599 (Location, ret_type, Report);
return false;
}
TypeManager.CheckTypeVariance (ret_type, Variance.Covariant, this);
//
// We don't have to check any others because they are all
// guaranteed to be accessible - they are standard types.
//.........这里部分代码省略.........
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:101,代码来源:delegate.cs
示例9: Define
public override bool Define ()
{
member_cache = new MemberCache (TypeManager.enum_type, this);
DefineContainerMembers (constants);
return true;
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:6,代码来源:enum.cs
示例10: DoDefineMembers
protected virtual bool DoDefineMembers ()
{
if (iface_exprs != null) {
foreach (TypeExpr iface in iface_exprs) {
ObsoleteAttribute oa = AttributeTester.GetObsoleteAttribute (iface.Type);
if ((oa != null) && !IsObsolete)
AttributeTester.Report_ObsoleteMessage (
oa, iface.GetSignatureForError (), Location, Report);
GenericTypeExpr ct = iface as GenericTypeExpr;
if (ct != null) {
// TODO: passing `this' is wrong, should be base type iface instead
TypeManager.CheckTypeVariance (ct.Type, Variance.Covariant, this);
if (!ct.CheckConstraints (this))
return false;
}
}
}
if (base_type != null) {
ObsoleteAttribute obsolete_attr = AttributeTester.GetObsoleteAttribute (base_type.Type);
if (obsolete_attr != null && !IsObsolete)
AttributeTester.Report_ObsoleteMessage (obsolete_attr, base_type.GetSignatureForError (), Location, Report);
GenericTypeExpr ct = base_type as GenericTypeExpr;
if ((ct != null) && !ct.CheckConstraints (this))
return false;
TypeContainer baseContainer = TypeManager.LookupTypeContainer(base_type.Type);
if (baseContainer != null)
baseContainer.Define();
member_cache = new MemberCache (base_type.Type, this);
} else if (Kind == Kind.Interface) {
member_cache = new MemberCache (null, this);
Type [] ifaces = TypeManager.GetInterfaces (TypeBuilder);
for (int i = 0; i < ifaces.Length; ++i)
member_cache.AddInterface (TypeManager.LookupMemberCache (ifaces [i]));
} else {
member_cache = new MemberCache (null, this);
}
if (types != null)
foreach (TypeContainer tc in types)
member_cache.AddNestedType (tc);
if (delegates != null)
foreach (Delegate d in delegates)
member_cache.AddNestedType (d);
if (partial_parts != null) {
foreach (TypeContainer part in partial_parts)
part.member_cache = member_cache;
}
if (!IsTopLevel) {
MemberInfo conflict_symbol = Parent.PartialContainer.FindBaseMemberWithSameName (Basename, false);
if (conflict_symbol == null) {
if ((ModFlags & Modifiers.NEW) != 0)
Report.Warning (109, 4, Location, "The member `{0}' does not hide an inherited member. The new keyword is not required", GetSignatureForError ());
} else {
if ((ModFlags & Modifiers.NEW) == 0) {
Report.SymbolRelatedToPreviousError (conflict_symbol);
Report.Warning (108, 2, Location, "`{0}' hides inherited member `{1}'. Use the new keyword if hiding was intended",
GetSignatureForError (), TypeManager.GetFullNameSignature (conflict_symbol));
}
}
}
DefineContainerMembers (constants);
DefineContainerMembers (fields);
if (Kind == Kind.Struct || Kind == Kind.Class) {
pending = PendingImplementation.GetPendingImplementations (this);
if (requires_delayed_unmanagedtype_check) {
requires_delayed_unmanagedtype_check = false;
foreach (FieldBase f in fields) {
if (f.MemberType != null && f.MemberType.IsPointer)
TypeManager.VerifyUnManaged (f.MemberType, f.Location);
}
}
}
//
// Constructors are not in the defined_names array
//
DefineContainerMembers (instance_constructors);
DefineContainerMembers (events);
DefineContainerMembers (ordered_explicit_member_list);
DefineContainerMembers (ordered_member_list);
DefineContainerMembers (operators);
DefineContainerMembers (delegates);
ComputeIndexerName();
CheckEqualsAndGetHashCode();
//.........这里部分代码省略.........
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:101,代码来源:class.cs
示例11: CloseType
public override void CloseType ()
{
if ((caching_flags & Flags.CloseTypeCreated) != 0)
return;
try {
caching_flags |= Flags.CloseTypeCreated;
TypeBuilder.CreateType ();
} catch (TypeLoadException){
//
// This is fine, the code still created the type
//
// Report.Warning (-20, "Exception while creating class: " + TypeBuilder.Name);
// Console.WriteLine (e.Message);
} catch (Exception e) {
throw new InternalErrorException (this, e);
}
if (Types != null){
foreach (TypeContainer tc in Types)
if (tc.Kind == Kind.Struct)
tc.CloseType ();
foreach (TypeContainer tc in Types)
if (tc.Kind != Kind.Struct)
tc.CloseType ();
}
if (Delegates != null)
foreach (Delegate d in Delegates)
d.CloseType ();
if (compiler_generated != null)
foreach (CompilerGeneratedClass c in compiler_generated)
c.CloseType ();
PartialContainer = null;
types = null;
// properties = null;
delegates = null;
fields = null;
initialized_fields = null;
initialized_static_fields = null;
constants = null;
ordered_explicit_member_list = null;
ordered_member_list = null;
methods = null;
events = null;
indexers = null;
operators = null;
compiler_generated = null;
default_constructor = null;
default_static_constructor = null;
type_bases = null;
OptAttributes = null;
ifaces = null;
base_cache = null;
member_cache = null;
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:59,代码来源:class.cs
注:本文中的Mono.CSharp.MemberCache类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论