本文整理汇总了C#中System.CodeDom.CodeDelegateCreateExpression类的典型用法代码示例。如果您正苦于以下问题:C# CodeDelegateCreateExpression类的具体用法?C# CodeDelegateCreateExpression怎么用?C# CodeDelegateCreateExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CodeDelegateCreateExpression类属于System.CodeDom命名空间,在下文中一共展示了CodeDelegateCreateExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Serialize
public override void Serialize (IDesignerSerializationManager manager, object value, MemberDescriptor descriptor, CodeStatementCollection statements)
{
if (statements == null)
throw new ArgumentNullException ("statements");
if (manager == null)
throw new ArgumentNullException ("manager");
if (value == null)
throw new ArgumentNullException ("value");
if (descriptor == null)
throw new ArgumentNullException ("descriptor");
IEventBindingService service = manager.GetService (typeof (IEventBindingService)) as IEventBindingService;
if (service != null) {
// In the propertygrid the events are represented by PropertyDescriptors and the value is a string
// which contains the method name to bind to. The propertydescriptors are managed and created by the
// IEventBindingService
//
EventDescriptor ev = (EventDescriptor) descriptor;
string methodName = (string) service.GetEventProperty (ev).GetValue (value);
CodeDelegateCreateExpression listener = new CodeDelegateCreateExpression (new CodeTypeReference (ev.EventType), _thisReference, methodName);
CodeExpression targetObject = base.SerializeToExpression (manager, value);
CodeEventReferenceExpression eventRef = new CodeEventReferenceExpression (targetObject, ev.Name);
statements.Add (new CodeAttachEventStatement (eventRef, listener));
}
}
开发者ID:JianwenSun,项目名称:mono-soc-2007,代码行数:25,代码来源:EventCodeDomSerializer.cs
示例2: Constructor1
public void Constructor1 ()
{
CodeExpression expression = new CodeExpression ();
CodeTypeReference type = new CodeTypeReference ("mono");
string methodName = "mono";
CodeDelegateCreateExpression cdce = new CodeDelegateCreateExpression (
type, expression, methodName);
Assert.IsNotNull (cdce.DelegateType, "#1");
Assert.AreSame (type, cdce.DelegateType, "#2");
Assert.IsNotNull (cdce.MethodName, "#3");
Assert.AreSame (methodName, cdce.MethodName, "#4");
Assert.IsNotNull (cdce.TargetObject, "#5");
Assert.AreSame (expression, cdce.TargetObject, "#6");
cdce = new CodeDelegateCreateExpression ((CodeTypeReference) null,
(CodeExpression) null, (string) null);
Assert.IsNotNull (cdce.DelegateType, "#7");
Assert.AreEqual (typeof (void).FullName, cdce.DelegateType.BaseType, "#8");
Assert.IsNotNull (cdce.MethodName, "#9");
Assert.AreEqual (string.Empty, cdce.MethodName, "#10");
Assert.IsNull (cdce.TargetObject, "#11");
}
开发者ID:nlhepler,项目名称:mono,代码行数:25,代码来源:CodeDelegateCreateExpressionTest.cs
示例3: AddAsyncMethod
internal static CodeMemberMethod AddAsyncMethod(CodeTypeDeclaration codeClass, string methodName, string[] parameterTypeNames, string[] parameterNames, string callbackMember, string callbackName, string userState)
{
CodeMemberMethod method = AddMethod(codeClass, methodName, new CodeFlags[parameterNames.Length], parameterTypeNames, parameterNames, typeof(void).FullName, null, CodeFlags.IsPublic);
method.Comments.Add(new CodeCommentStatement(Res.GetString("CodeRemarks"), true));
CodeMethodInvokeExpression expression = new CodeMethodInvokeExpression(new CodeThisReferenceExpression(), methodName, new CodeExpression[0]);
for (int i = 0; i < parameterNames.Length; i++)
{
expression.Parameters.Add(new CodeArgumentReferenceExpression(parameterNames[i]));
}
expression.Parameters.Add(new CodePrimitiveExpression(null));
method.Statements.Add(expression);
method = AddMethod(codeClass, methodName, new CodeFlags[parameterNames.Length], parameterTypeNames, parameterNames, typeof(void).FullName, null, CodeFlags.IsPublic);
method.Comments.Add(new CodeCommentStatement(Res.GetString("CodeRemarks"), true));
method.Parameters.Add(new CodeParameterDeclarationExpression(typeof(object), userState));
CodeFieldReferenceExpression left = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), callbackMember);
CodeBinaryOperatorExpression condition = new CodeBinaryOperatorExpression(left, CodeBinaryOperatorType.IdentityEquality, new CodePrimitiveExpression(null));
CodeDelegateCreateExpression right = new CodeDelegateCreateExpression {
DelegateType = new CodeTypeReference(typeof(SendOrPostCallback)),
TargetObject = new CodeThisReferenceExpression(),
MethodName = callbackName
};
CodeStatement[] trueStatements = new CodeStatement[] { new CodeAssignStatement(left, right) };
method.Statements.Add(new CodeConditionStatement(condition, trueStatements, new CodeStatement[0]));
return method;
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:25,代码来源:WebCodeGenerator.cs
示例4: Serialize
public override void Serialize (IDesignerSerializationManager manager, object value, MemberDescriptor descriptor,
CodeStatementCollection statements)
{
if (statements == null)
throw new ArgumentNullException ("statements");
if (manager == null)
throw new ArgumentNullException ("manager");
if (value == null)
throw new ArgumentNullException ("value");
if (descriptor == null)
throw new ArgumentNullException ("descriptor");
IEventBindingService service = manager.GetService (typeof (IEventBindingService)) as IEventBindingService;
if (service != null) {
EventDescriptor eventDescriptor = (EventDescriptor) descriptor;
string methodName = (string) service.GetEventProperty (eventDescriptor).GetValue (value);
if (methodName != null) {
CodeDelegateCreateExpression listener = new CodeDelegateCreateExpression (new CodeTypeReference (eventDescriptor.EventType),
_thisReference, methodName);
CodeExpression targetObject = base.SerializeToExpression (manager, value);
CodeEventReferenceExpression eventRef = new CodeEventReferenceExpression (targetObject, eventDescriptor.Name);
statements.Add (new CodeAttachEventStatement (eventRef, listener));
}
}
}
开发者ID:Profit0004,项目名称:mono,代码行数:26,代码来源:EventCodeDomSerializer.cs
示例5: Clone
public static CodeDelegateCreateExpression Clone(this CodeDelegateCreateExpression expression)
{
if (expression == null) return null;
CodeDelegateCreateExpression e = new CodeDelegateCreateExpression();
e.DelegateType = expression.DelegateType.Clone();
e.MethodName = expression.MethodName;
e.TargetObject = expression.TargetObject.Clone();
e.UserData.AddRange(expression.UserData);
return e;
}
开发者ID:svejdo1,项目名称:CodeDomExtensions,代码行数:10,代码来源:CodeDelegateCreateExpressionExtensions.cs
示例6: TypescriptDelegateCreateExpression
public TypescriptDelegateCreateExpression(
IExpressionFactory expressionFactory,
CodeDelegateCreateExpression codeExpression,
CodeGeneratorOptions options)
{
_expressionFactory = expressionFactory;
_codeExpression = codeExpression;
_options = options;
System.Diagnostics.Debug.WriteLine("TypescriptDelegateCreateExpression Created");
}
开发者ID:s2quake,项目名称:TypescriptCodeDom,代码行数:10,代码来源:TypescriptDelegateCreateExpression.cs
示例7: Constructor0_Deny_Unrestricted
public void Constructor0_Deny_Unrestricted ()
{
CodeDelegateCreateExpression cdce = new CodeDelegateCreateExpression ();
Assert.AreEqual ("System.Void", cdce.DelegateType.BaseType, "DelegateType");
cdce.DelegateType = new CodeTypeReference ("System.Int32");
Assert.AreEqual (String.Empty, cdce.MethodName, "MethodName");
cdce.MethodName = "mono";
Assert.IsNull (cdce.TargetObject, "TargetObject");
cdce.TargetObject = new CodeExpression ();
}
开发者ID:nlhepler,项目名称:mono,代码行数:10,代码来源:CodeDelegateCreateExpressionCas.cs
示例8: Constructor1_Deny_Unrestricted
public void Constructor1_Deny_Unrestricted ()
{
CodeTypeReference delegate_type = new CodeTypeReference ("System.Int32");
CodeExpression target = new CodeExpression ();
string method = "mono";
CodeDelegateCreateExpression cdce = new CodeDelegateCreateExpression (delegate_type, target, method);
Assert.AreSame (delegate_type, cdce.DelegateType, "DelegateType");
cdce.DelegateType = new CodeTypeReference ("System.Void");
Assert.AreEqual (method, cdce.MethodName, "MethodName");
cdce.MethodName = String.Empty;
Assert.AreSame (target, cdce.TargetObject, "TargetObject");
cdce.TargetObject = new CodeExpression ();
}
开发者ID:nlhepler,项目名称:mono,代码行数:13,代码来源:CodeDelegateCreateExpressionCas.cs
示例9: Serialize
public override void Serialize(IDesignerSerializationManager manager, object value, MemberDescriptor descriptor, CodeStatementCollection statements)
{
EventDescriptor e = descriptor as EventDescriptor;
if (manager == null)
{
throw new ArgumentNullException("manager");
}
if (value == null)
{
throw new ArgumentNullException("value");
}
if (e == null)
{
throw new ArgumentNullException("descriptor");
}
if (statements == null)
{
throw new ArgumentNullException("statements");
}
try
{
IEventBindingService service = (IEventBindingService) manager.GetService(typeof(IEventBindingService));
if (service != null)
{
string methodName = (string) service.GetEventProperty(e).GetValue(value);
if (methodName != null)
{
CodeExpression targetObject = base.SerializeToExpression(manager, value);
if (targetObject != null)
{
CodeTypeReference delegateType = new CodeTypeReference(e.EventType);
CodeDelegateCreateExpression listener = new CodeDelegateCreateExpression(delegateType, _thisRef, methodName);
CodeEventReferenceExpression eventRef = new CodeEventReferenceExpression(targetObject, e.Name);
CodeAttachEventStatement statement = new CodeAttachEventStatement(eventRef, listener);
statement.UserData[typeof(Delegate)] = e.EventType;
statements.Add(statement);
}
}
}
}
catch (Exception innerException)
{
if (innerException is TargetInvocationException)
{
innerException = innerException.InnerException;
}
manager.ReportError(System.Design.SR.GetString("SerializerPropertyGenFailed", new object[] { e.Name, innerException.Message }));
}
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:49,代码来源:EventMemberCodeDomSerializer.cs
示例10: Visit
public void Visit(ProcedureCall call)
{
var domArg = new CodeDomArg();
CodeMemberMethod method = new CodeMemberMethod();
method.Name = "Exec_" + domArg.MethodIdentifier;
method.Attributes = MemberAttributes.Private;
GenerateCallStatement(method.Statements, call.Line.Line);
_mainType.Type.Members.Add(method);
var methodStatements = new CodeStatementCollection();
var argList = new List<CodeExpression>();
foreach(var arg in call.Args)
{
domArg = VisitChild(arg);
argList.Add(domArg.CodeExpression);
}
methodStatements.Add(
new CodeVariableDeclarationStatement(call.Name, "r",
new CodeObjectCreateExpression(call.Name, argList.ToArray()))
);
methodStatements.Add(
new CodeAssignStatement(
new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("r"), "RequestFactory"),
new CodePropertyReferenceExpression(null, "RequestFactory"))
);
var delegateGen = new CodeDelegateCreateExpression(new CodeTypeReference(typeof(Action<ProgressArgs>)),
new CodeThisReferenceExpression(), "OnProgress");
methodStatements.Add(new CodeAttachEventStatement(new CodeVariableReferenceExpression("r"), "Progress", delegateGen));
methodStatements.Add(
new CodeMethodInvokeExpression(new CodeVariableReferenceExpression("r"), "Run")
);
methodStatements.Add(new CodeRemoveEventStatement(new CodeVariableReferenceExpression("r"), "Progress", delegateGen));
method.Statements.AddRange(methodStatements);
var methodcall = new CodeMethodInvokeExpression(
new CodeMethodReferenceExpression(null, method.Name));
_codeStack.Peek().ParentStatements.Add(methodcall);
}
开发者ID:bitsummation,项目名称:pickaxe,代码行数:46,代码来源:Visitor.ProcedureCall.cs
示例11: BuildControlSkinAssignmentStatement
private CodeStatement BuildControlSkinAssignmentStatement(ControlBuilder builder, string skinID)
{
Type controlType = builder.ControlType;
string name = base.GetMethodNameForBuilder(BaseTemplateCodeDomTreeGenerator.buildMethodPrefix, builder) + "_skinKey";
CodeMemberField field = new CodeMemberField(typeof(object), name) {
Attributes = MemberAttributes.Private | MemberAttributes.Static
};
CodeMethodInvokeExpression expression = new CodeMethodInvokeExpression {
Method = new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(PageTheme)), "CreateSkinKey")
};
expression.Parameters.Add(new CodeTypeOfExpression(controlType));
expression.Parameters.Add(new CodePrimitiveExpression(skinID));
field.InitExpression = expression;
base._sourceDataClass.Members.Add(field);
CodeFieldReferenceExpression targetObject = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "__controlSkins");
CodeIndexerExpression left = new CodeIndexerExpression(targetObject, new CodeExpression[] { new CodeVariableReferenceExpression(name) });
CodeDelegateCreateExpression expression4 = new CodeDelegateCreateExpression(this._controlSkinDelegateType, new CodeThisReferenceExpression(), base.GetMethodNameForBuilder(BaseTemplateCodeDomTreeGenerator.buildMethodPrefix, builder));
CodeObjectCreateExpression right = new CodeObjectCreateExpression(this._controlSkinType, new CodeExpression[0]);
right.Parameters.Add(new CodeTypeOfExpression(controlType));
right.Parameters.Add(expression4);
return new CodeAssignStatement(left, right);
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:22,代码来源:PageThemeCodeDomTreeGenerator.cs
示例12: AddEventAssign
void AddEventAssign (CodeMemberMethod method, ControlBuilder builder, string name, Type type, string value)
{
//"__ctrl.{0} += new {1} (this.{2});"
CodeEventReferenceExpression evtID = new CodeEventReferenceExpression (ctrlVar, name);
CodeDelegateCreateExpression create;
create = new CodeDelegateCreateExpression (new CodeTypeReference (type), thisRef, value);
CodeAttachEventStatement attach = new CodeAttachEventStatement (evtID, create);
method.Statements.Add (attach);
}
开发者ID:nlhepler,项目名称:mono,代码行数:11,代码来源:TemplateControlCompiler.cs
示例13: GenerateDelegateCreateExpression
protected override void GenerateDelegateCreateExpression (CodeDelegateCreateExpression e)
{
}
开发者ID:Profit0004,项目名称:mono,代码行数:3,代码来源:CodeGeneratorCas.cs
示例14: GenerateDelegateCreateExpression
protected override void GenerateDelegateCreateExpression (CodeDelegateCreateExpression expression)
{
TextWriter output = Output;
output.Write ("AddressOf ");
CodeExpression targetObject = expression.TargetObject;
if (targetObject != null) {
GenerateExpression (targetObject);
Output.Write ('.');
}
output.Write (expression.MethodName);
}
开发者ID:nlhepler,项目名称:mono,代码行数:13,代码来源:VBCodeGenerator.cs
示例15: GenerateDelegateCreateExpression
protected abstract void GenerateDelegateCreateExpression (CodeDelegateCreateExpression e);
开发者ID:carrie901,项目名称:mono,代码行数:1,代码来源:CodeGenerator.cs
示例16: Visit
public void Visit (CodeDelegateCreateExpression o)
{
g.GenerateDelegateCreateExpression (o);
}
开发者ID:carrie901,项目名称:mono,代码行数:4,代码来源:CodeGenerator.cs
示例17: BindSignalHandlers
internal static void BindSignalHandlers (CodeExpression targetObjectVar, ObjectWrapper wrapper, Stetic.WidgetMap map, CodeStatementCollection statements, GenerationOptions options)
{
foreach (Signal signal in wrapper.Signals) {
SignalDescriptor descriptor = signal.SignalDescriptor;
CodeExpression createDelegate;
if (options.UsePartialClasses) {
createDelegate =
new CodeDelegateCreateExpression (
new CodeTypeReference (descriptor.HandlerTypeName, CodeTypeReferenceOptions.GlobalReference),
new CodeThisReferenceExpression (),
signal.Handler);
} else {
createDelegate =
new CodeMethodInvokeExpression (
new CodeTypeReferenceExpression (new CodeTypeReference (typeof(Delegate), CodeTypeReferenceOptions.GlobalReference)),
"CreateDelegate",
new CodeTypeOfExpression (descriptor.HandlerTypeName),
targetObjectVar,
new CodePrimitiveExpression (signal.Handler));
createDelegate = new CodeCastExpression (descriptor.HandlerTypeName.ToGlobalTypeRef (), createDelegate);
}
CodeAttachEventStatement cevent = new CodeAttachEventStatement (
new CodeEventReferenceExpression (
map.GetWidgetExp (wrapper),
descriptor.Name),
createDelegate);
statements.Add (cevent);
}
Wrapper.Widget widget = wrapper as Wrapper.Widget;
if (widget != null && widget.IsTopLevel) {
// Bind local action signals
foreach (Wrapper.ActionGroup grp in widget.LocalActionGroups) {
foreach (Wrapper.Action ac in grp.Actions)
BindSignalHandlers (targetObjectVar, ac, map, statements, options);
}
}
Gtk.Container cont = wrapper.Wrapped as Gtk.Container;
if (cont != null) {
foreach (Gtk.Widget child in cont.AllChildren) {
Stetic.Wrapper.Widget ww = Stetic.Wrapper.Widget.Lookup (child);
if (ww != null)
BindSignalHandlers (targetObjectVar, ww, map, statements, options);
}
}
}
开发者ID:FreeBSD-DotNet,项目名称:monodevelop,代码行数:53,代码来源:CodeGenerator.cs
示例18: EmitDelegateCreateExpression
private Type EmitDelegateCreateExpression(CodeDelegateCreateExpression del)
{
Depth++;
Debug("Emitting delegate: " + del.MethodName);
// HACK: use generic method lookup for emitting delegates
if (!Methods.ContainsKey(del.MethodName))
throw new CompileException(del, "Delegate function does not exist in local scope");
var method = (MethodInfo) Methods[del.MethodName].Method;
Generator.Emit(OpCodes.Ldnull);
Generator.Emit(OpCodes.Ldftn, method);
var type = del.DelegateType.UserData[Parser.RawData] as Type ?? Type.GetType(del.DelegateType.BaseType);
if (type == null)
throw new CompileException(del, "Invalid delegate type");
if (Mirror != null)
type = Mirror.GrabType(type);
var ctor = type.GetConstructors()[0];
Generator.Emit(OpCodes.Newobj, ctor);
Depth--;
return type;
}
开发者ID:Tyelpion,项目名称:IronAHK,代码行数:30,代码来源:EmitExpr.cs
示例19: GenerateProperties
//.........这里部分代码省略.........
CodeExpression fieldValue = GetFieldValueForRead(fi);
if (fi.ParentClass.GetDataSource().EnableDynamicFields)
{
switch (fi.IsNullable ? actualNullableRepresentation : actualNotNullRepresentation)
{
case PrimitiveRepresentation.Boxed:
break;
case PrimitiveRepresentation.SqlType:
case PrimitiveRepresentation.RawWithIsNull:
case PrimitiveRepresentation.Raw:
fieldValue = new CodeCastExpression(new CodeTypeReference(fi.GetNullableFieldHandler().GetFieldType()), fieldValue);
break;
case PrimitiveRepresentation.Nullable:
fieldValue = new CodeCastExpression(new CodeTypeReference(fi.GetNullableFieldHandler().GetNullableType()), fieldValue);
break;
default:
throw new NotImplementedException("Unknown PrimitiveRepresentation");
}
}
prop.GetStatements.Add(new CodeMethodReturnStatement(fieldValue));
if (!classInfo.ReadOnly && !fi.ReadOnly)
{
// plain field setter
CodeExpression beforeDelegate = new CodePrimitiveExpression(null);
CodeExpression afterDelegate = new CodePrimitiveExpression(null);
if (classInfo.Triggers)
{
beforeDelegate = new CodeDelegateCreateExpression(new CodeTypeReference(typeof(SoodaFieldUpdateDelegate)),
new CodeThisReferenceExpression(), "BeforeFieldUpdate_" + fi.Name);
afterDelegate = new CodeDelegateCreateExpression(new CodeTypeReference(typeof(SoodaFieldUpdateDelegate)),
new CodeThisReferenceExpression(), "AfterFieldUpdate_" + fi.Name);
}
prop.SetStatements.Add(
new CodeExpressionStatement(
new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression(typeof(Sooda.ObjectMapper.SoodaObjectImpl)), "SetPlainFieldValue",
// parameters
new CodeThisReferenceExpression(),
new CodePrimitiveExpression(fi.Table.OrdinalInClass),
new CodePrimitiveExpression(fi.Name),
new CodePrimitiveExpression(fi.ClassUnifiedOrdinal),
Box(new CodePropertySetValueReferenceExpression()),
beforeDelegate,
afterDelegate
)));
}
}
}
if (classInfo.Collections1toN != null)
{
foreach (CollectionOnetoManyInfo coli in classInfo.Collections1toN)
{
prop = new CodeMemberProperty();
prop.Name = coli.Name;
prop.Attributes = MemberAttributes.Final | MemberAttributes.Public;
prop.Type = GetCollectionPropertyType(coli.ClassName);
开发者ID:valery-shinkevich,项目名称:sooda,代码行数:67,代码来源:CodeDomClassStubGenerator.cs
示例20: GenerateDelegateCreateExpression
protected override void GenerateDelegateCreateExpression(CodeDelegateCreateExpression e)
{
base.Output.Write("AddressOf ");
base.GenerateExpression(e.TargetObject);
base.Output.Write(".");
this.OutputIdentifier(e.MethodName);
}
开发者ID:laymain,项目名称:CodeDomUtils,代码行数:7,代码来源:VBCodeGenerator.cs
注:本文中的System.CodeDom.CodeDelegateCreateExpression类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论