本文整理汇总了C#中GeneratorContext.GenerateValue方法的典型用法代码示例。如果您正苦于以下问题:C# GeneratorContext.GenerateValue方法的具体用法?C# GeneratorContext.GenerateValue怎么用?C# GeneratorContext.GenerateValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GeneratorContext
的用法示例。
在下文中一共展示了GeneratorContext.GenerateValue方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateObjectCreation
internal protected override CodeExpression GenerateObjectCreation (GeneratorContext ctx)
{
CodeObjectCreateExpression exp = new CodeObjectCreateExpression ();
PropertyDescriptor prop = (PropertyDescriptor) ClassDescriptor ["Name"];
exp.Parameters.Add (ctx.GenerateValue (prop.GetValue (Wrapped), prop.RuntimePropertyType));
prop = (PropertyDescriptor) ClassDescriptor ["Label"];
string lab = (string) prop.GetValue (Wrapped);
if (lab == "") lab = null;
exp.Parameters.Add (ctx.GenerateValue (lab, prop.RuntimePropertyType, prop.Translatable));
prop = (PropertyDescriptor) ClassDescriptor ["Tooltip"];
exp.Parameters.Add (ctx.GenerateValue (prop.GetValue (Wrapped), prop.RuntimePropertyType, prop.Translatable));
prop = (PropertyDescriptor) ClassDescriptor ["StockId"];
exp.Parameters.Add (ctx.GenerateValue (prop.GetValue (Wrapped), prop.RuntimePropertyType, prop.Translatable));
if (type == ActionType.Action)
exp.CreateType = new CodeTypeReference ("Gtk.Action", CodeTypeReferenceOptions.GlobalReference);
else if (type == ActionType.Toggle)
exp.CreateType = new CodeTypeReference ("Gtk.ToggleAction", CodeTypeReferenceOptions.GlobalReference);
else {
exp.CreateType = new CodeTypeReference ("Gtk.RadioAction", CodeTypeReferenceOptions.GlobalReference);
prop = (PropertyDescriptor) ClassDescriptor ["Value"];
exp.Parameters.Add (ctx.GenerateValue (prop.GetValue (Wrapped), typeof(int)));
}
return exp;
}
示例2: GenerateBuildCode
internal protected override void GenerateBuildCode (GeneratorContext ctx, CodeExpression var)
{
if (textCombo && Items != null && Items.Length > 0) {
foreach (string str in Items) {
ctx.Statements.Add (new CodeMethodInvokeExpression (
var,
"AppendText",
ctx.GenerateValue (str, typeof(string), true)
));
}
}
base.GenerateBuildCode (ctx, var);
}
示例3: GenerateUiManagerElement
protected CodeExpression GenerateUiManagerElement (GeneratorContext ctx, ActionTree tree)
{
Widget topLevel = GetTopLevel ();
string uiName = topLevel.UIManagerName;
if (uiName != null) {
CodeFieldReferenceExpression uiManager = new CodeFieldReferenceExpression (new CodeThisReferenceExpression (), uiName);
if (topLevel.includedActionGroups == null)
topLevel.includedActionGroups = new ArrayList ();
// Add to the uimanager all action groups required by the
// actions of the tree
foreach (ActionGroup grp in tree.GetRequiredGroups ()) {
if (!topLevel.includedActionGroups.Contains (grp)) {
// Insert the action group in the UIManager
CodeMethodInvokeExpression mi = new CodeMethodInvokeExpression (
uiManager,
"InsertActionGroup",
ctx.GenerateValue (grp, typeof(ActionGroup)),
new CodePrimitiveExpression (topLevel.includedActionGroups.Count)
);
ctx.Statements.Add (mi);
topLevel.includedActionGroups.Add (grp);
}
}
tree.GenerateBuildCode (ctx, uiManager);
return new CodeMethodInvokeExpression (
uiManager,
"GetWidget",
new CodePrimitiveExpression ("/" + Wrapped.Name)
);
}
return null;
}
示例4: GenerateBuildCode
internal protected override void GenerateBuildCode (GeneratorContext ctx, CodeExpression var)
{
base.GenerateBuildCode (ctx, var);
if (Type != ButtonType.TextAndIcon) {
CodePropertyReferenceExpression cprop = new CodePropertyReferenceExpression (var, "Label");
PropertyDescriptor prop = (PropertyDescriptor) this.ClassDescriptor ["Label"];
bool trans = Type != ButtonType.StockItem && prop.IsTranslated (Wrapped);
CodeExpression val = ctx.GenerateValue (button.Label, typeof(string), trans);
ctx.Statements.Add (new CodeAssignStatement (cprop, val));
}
}
示例5: GenerateChildPropertySet
protected virtual void GenerateChildPropertySet (GeneratorContext ctx, CodeVariableReferenceExpression var, ClassDescriptor containerChildClass, PropertyDescriptor prop, object child)
{
if (containerChildClass.InitializationProperties != null && Array.IndexOf (containerChildClass.InitializationProperties, prop) != -1)
return;
// Design time
if (prop.Name == "AutoSize")
return;
object oval = prop.GetValue (child);
if (oval == null || (prop.HasDefault && prop.IsDefaultValue (oval)))
return;
CodePropertyReferenceExpression cprop = new CodePropertyReferenceExpression (var, prop.Name);
CodeExpression val = ctx.GenerateValue (oval, prop.RuntimePropertyType, prop.Translatable);
ctx.Statements.Add (new CodeAssignStatement (cprop, val));
}
示例6: GenerateBuildCode
internal protected override void GenerateBuildCode (GeneratorContext ctx, CodeExpression var)
{
base.GenerateBuildCode (ctx, var);
string text = button.Label;
if (!string.IsNullOrEmpty (text)) {
CodePropertyReferenceExpression cprop = new CodePropertyReferenceExpression (var, "Label");
PropertyDescriptor prop = (PropertyDescriptor)this.ClassDescriptor ["Label"];
bool trans = Type != ButtonType.StockItem && prop.IsTranslated (Wrapped);
CodeExpression val = ctx.GenerateValue (text, typeof(string), trans);
ctx.Statements.Add (new CodeAssignStatement (cprop, val));
}
if (Type == ButtonType.TextAndIcon) {
var imageWidget = (Gtk.Image) button.Image;
if (imageWidget != null) {
Image imageWrapper = (Image)Widget.Lookup (imageWidget);
var imgVar = ctx.GenerateNewInstanceCode (imageWrapper);
var imgProp = new CodePropertyReferenceExpression (var, "Image");
ctx.Statements.Add (new CodeAssignStatement (imgProp, imgVar));
}
}
}