本文整理汇总了C#中Boo.Lang.Compiler.Ast.Event类的典型用法代码示例。如果您正苦于以下问题:C# Event类的具体用法?C# Event怎么用?C# Event使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Event类属于Boo.Lang.Compiler.Ast命名空间,在下文中一共展示了Event类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: LeaveEvent
public override void LeaveEvent(Event node)
{
if (IsInterfaceMember(node))
node.Modifiers = TypeMemberModifiers.Public | TypeMemberModifiers.Abstract;
else if (!node.IsVisibilitySet)
node.Modifiers |= Context.Parameters.DefaultEventVisibility;
LeaveMember(node);
}
开发者ID:elfrostie,项目名称:boo,代码行数:8,代码来源:NormalizeTypeAndMemberDefinitions.cs
示例2: LeaveEvent
public override void LeaveEvent(Event node)
{
if (!node.IsVisibilitySet)
{
node.Modifiers |= TypeMemberModifiers.Public;
}
if (IsInterface(node.DeclaringType))
{
node.Modifiers |= TypeMemberModifiers.Abstract;
}
LeaveMember(node);
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:12,代码来源:NormalizeTypeAndMemberDefinitions.cs
示例3: BindEvent
void BindEvent(Event node)
{
EnsureEntityFor(node);
IType type = GetType(node.Type);
IType declaringType = GetType(node.DeclaringType);
bool typeIsCallable = type is ICallableType;
if (!typeIsCallable)
{
Errors.Add(
CompilerErrorFactory.EventTypeIsNotCallable(node.Type,
type.ToString()));
}
if (declaringType.IsInterface)
{
BindInterfaceEvent(node);
}
else
{
BindClassEvent(node, type, typeIsCallable);
}
}
开发者ID:turugina,项目名称:boo,代码行数:23,代码来源:BindTypeMembers.cs
示例4: LeaveEvent
public override void LeaveEvent(Event node)
{
CheckName(node,node.Name);
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:CheckIdentifiers.cs
示例5: event_declaration
protected void event_declaration(
TypeMemberCollection container
) //throws RecognitionException, TokenStreamException
{
IToken t = null;
IToken id = null;
Event e = null;
TypeReference tr = null;
try { // for error handling
t = LT(1);
match(EVENT);
id = LT(1);
match(ID);
match(AS);
tr=type_reference();
eos();
if (0==inputState.guessing)
{
e = new Event(ToLexicalInfo(id), id.getText(), tr);
e.Modifiers = _modifiers;
AddAttributes(e.Attributes);
container.Add(e);
}
docstring(e);
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "event_declaration");
recover(ex,tokenSet_55_);
}
else
{
throw ex;
}
}
}
开发者ID:hlizard,项目名称:boo,代码行数:44,代码来源:BooParserBase.cs
示例6: OnEvent
public override void OnEvent(Event node)
{
_emitter.EmitEventAttributes(node);
}
开发者ID:Bombadil77,项目名称:boo,代码行数:4,代码来源:EmitAssembly.cs
示例7: DefineEvent
void DefineEvent(TypeBuilder typeBuilder, Event node)
{
EventBuilder builder = typeBuilder.DefineEvent(node.Name,
EventAttributes.None,
GetSystemType(node.Type));
//MethodAttributes attribs = GetPropertyMethodAttributes(node);
MethodAttributes baseAttributes = MethodAttributes.SpecialName;
builder.SetAddOnMethod(DefineMethod(typeBuilder, node.Add, baseAttributes|GetMethodAttributes(node.Add)));
builder.SetRemoveOnMethod(DefineMethod(typeBuilder, node.Remove, baseAttributes|GetMethodAttributes(node.Remove)));
if (null != node.Raise)
{
builder.SetRaiseMethod(DefineMethod(typeBuilder, node.Raise, baseAttributes|GetMethodAttributes(node.Raise)));
}
SetBuilder(node, builder);
}
开发者ID:Bombadil77,项目名称:boo,代码行数:17,代码来源:EmitAssembly.cs
示例8: LeaveEvent
public override void LeaveEvent(Event node)
{
LeaveMember(node);
}
开发者ID:Bombadil77,项目名称:boo,代码行数:4,代码来源:CheckMemberTypes.cs
示例9: CreateInterfaceEventRemoveMethod
Method CreateInterfaceEventRemoveMethod(Event node)
{
return CreateInterfaceEventMethod(node, "remove_");
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:BindTypeMembers.cs
示例10: DefineEvent
void DefineEvent(TypeBuilder typeBuilder, Event node)
{
var builder = typeBuilder.DefineEvent(node.Name, EventAttributes.None, GetSystemType(node.Type));
builder.SetAddOnMethod(DefineEventMethod(typeBuilder, node.Add));
builder.SetRemoveOnMethod(DefineEventMethod(typeBuilder, node.Remove));
if (node.Raise != null)
builder.SetRaiseMethod(DefineEventMethod(typeBuilder, node.Raise));
SetBuilder(node, builder);
}
开发者ID:hlizard,项目名称:boo,代码行数:9,代码来源:EmitAssembly.cs
示例11: EmitEventAttributes
void EmitEventAttributes(Event node, TypeCreator knownTypes)
{
EventBuilder builder = (EventBuilder)GetBuilder(node);
EmitAttributes(node, builder.SetCustomAttribute, knownTypes);
}
开发者ID:hlizard,项目名称:boo,代码行数:5,代码来源:EmitAssembly.cs
示例12: OnEvent
public override void OnEvent(Event node)
{
_emitter.EmitEventAttributes(node, this._knownTypes);
}
开发者ID:hlizard,项目名称:boo,代码行数:4,代码来源:EmitAssembly.cs
示例13: InternalEvent
public InternalEvent(TypeSystemServices tagManager, Event event_)
{
_event = event_;
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:InternalEvent.cs
示例14: VisitEventDeclaration
public object VisitEventDeclaration(EventDeclaration eventDeclaration, object data)
{
B.Event m = new B.Event(GetLexicalInfo(eventDeclaration));
m.Name = eventDeclaration.Name;
m.Modifiers = ConvertModifier(eventDeclaration, B.TypeMemberModifiers.Private);
ConvertAttributes(eventDeclaration.Attributes, m.Attributes);
if (currentType != null) currentType.Members.Add(m);
m.EndSourceLocation = GetLocation(eventDeclaration.EndLocation);
m.Type = ConvertTypeReference(eventDeclaration.TypeReference);
if (eventDeclaration.InterfaceImplementations.Count > 0) {
AddError(eventDeclaration, "Explicit interface implementation is not supported for events.");
}
if (eventDeclaration.Parameters.Count > 0) {
AddError(eventDeclaration, "Events with parameters are not supported.");
}
if (eventDeclaration.HasAddRegion) {
m.Add = new B.Method(GetLexicalInfo(eventDeclaration.AddRegion));
ConvertAttributes(eventDeclaration.AddRegion.Attributes, m.Add.Attributes);
m.Modifiers = ConvertModifier(eventDeclaration.AddRegion, m.Visibility);
m.Add.Body = ConvertMethodBlock(eventDeclaration.AddRegion.Block);
}
if (eventDeclaration.HasRemoveRegion) {
m.Remove = new B.Method(GetLexicalInfo(eventDeclaration.RemoveRegion));
ConvertAttributes(eventDeclaration.RemoveRegion.Attributes, m.Remove.Attributes);
m.Modifiers = ConvertModifier(eventDeclaration.RemoveRegion, m.Visibility);
m.Remove.Body = ConvertMethodBlock(eventDeclaration.RemoveRegion.Block);
}
if (eventDeclaration.HasRaiseRegion) {
m.Raise = new B.Method(GetLexicalInfo(eventDeclaration.RaiseRegion));
ConvertAttributes(eventDeclaration.RaiseRegion.Attributes, m.Raise.Attributes);
m.Modifiers = ConvertModifier(eventDeclaration.RaiseRegion, m.Visibility);
m.Raise.Body = ConvertMethodBlock(eventDeclaration.RaiseRegion.Block);
}
return m;
}
开发者ID:Bombadil77,项目名称:SharpDevelop,代码行数:35,代码来源:ConvertVisitorTypeMembers.cs
示例15: BindInterfaceEvent
private void BindInterfaceEvent(Event node)
{
if (null == node.Add)
node.Add = CreateInterfaceEventAddMethod(node);
if (null == node.Remove)
node.Remove = CreateInterfaceEventRemoveMethod(node);
}
开发者ID:turugina,项目名称:boo,代码行数:7,代码来源:BindTypeMembers.cs
示例16: CreateInterfaceEventAddMethod
Method CreateInterfaceEventAddMethod(Event node)
{
return CreateInterfaceEventMethod(node, "add_");
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:BindTypeMembers.cs
示例17: CreateInterfaceEventMethod
Method CreateInterfaceEventMethod(Event node, string prefix)
{
Method method = CodeBuilder.CreateMethod(prefix + node.Name,
TypeSystemServices.VoidType,
TypeMemberModifiers.Public | TypeMemberModifiers.Virtual | TypeMemberModifiers.Abstract);
method.Parameters.Add(
CodeBuilder.CreateParameterDeclaration(
CodeBuilder.GetFirstParameterIndex(node),
"handler",
GetType(node.Type)));
return method;
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:12,代码来源:BindTypeMembers.cs
示例18: OnEvent
public override void OnEvent(Event node)
{
_events.Add(node);
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:BindTypeMembers.cs
示例19: BindClassEvent
private void BindClassEvent(Event node, IType type, bool typeIsCallable)
{
Field backingField = CodeBuilder.CreateField("___" + node.Name, type);
if (node.IsTransient)
{
backingField.Modifiers |= TypeMemberModifiers.Transient;
}
if (node.IsStatic)
{
backingField.Modifiers |= TypeMemberModifiers.Static;
}
node.DeclaringType.Members.Add(backingField);
((InternalEvent)node.Entity).BackingField = (InternalField)backingField.Entity;
if (null == node.Add)
{
node.Add = CreateEventAddMethod(node, backingField);
}
else
{
Visit(node.Add);
}
if (null == node.Remove)
{
node.Remove = CreateEventRemoveMethod(node, backingField);
}
else
{
Visit(node.Remove);
}
if (null == node.Raise)
{
if (typeIsCallable)
{
node.Raise = CreateEventRaiseMethod(node, backingField);
}
}
else
{
Visit(node.Raise);
}
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:45,代码来源:BindTypeMembers.cs
示例20: BindEvent
void BindEvent(Event node)
{
if (null == node.Entity)
{
node.Entity = new InternalEvent(TypeSystemServices, node);
}
IType type = GetType(node.Type);
IType declaringType = GetType(node.DeclaringType);
bool typeIsCallable = type is ICallableType;
if (!typeIsCallable)
{
Errors.Add(
CompilerErrorFactory.EventTypeIsNotCallable(node.Type,
type.ToString()));
}
if (declaringType.IsInterface)
{
BindInterfaceEvent(node);
}
else
{
BindClassEvent(node, type, typeIsCallable);
}
}
开发者ID:w4x,项目名称:boolangstudio,代码行数:26,代码来源:BindTypeMembers.cs
注:本文中的Boo.Lang.Compiler.Ast.Event类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论