新增默认脚本内容

This commit is contained in:
2025-10-27 00:29:32 +08:00
parent 104a80e527
commit 971baf8c9e
2 changed files with 24 additions and 9 deletions

View File

@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Convention.RScript.Variable.CStyle namespace Convention.RScript.Variable.CStyle
{ {
public class RScriptInjectVariable : Variable.RScriptInjectVariable public class RScriptVariableGenerater : RScriptInjectVariableGenerater
{ {
public static string GetTypename(Type type) public static string GetTypename(Type type)
{ {
@@ -18,7 +18,7 @@ namespace Convention.RScript.Variable.CStyle
private int layer = 0; private int layer = 0;
private string Prefix => new('\t', layer); private string Prefix => new('\t', layer);
public RScriptInjectVariable(Type targetType, [MaybeNull] Generater generater, string name) : base(targetType, generater, name) public RScriptVariableGenerater(Type targetType, [MaybeNull] Generater generater, string name) : base(targetType, generater, name)
{ {
} }

View File

@@ -19,9 +19,19 @@ namespace Convention.RScript.Variable
public sealed class EnumAttribute : Attribute public sealed class EnumAttribute : Attribute
{ {
} }
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct, Inherited = false, AllowMultiple = false)]
public sealed class DefaultAttribute : Attribute
{
public string defaultScript;
public DefaultAttribute(string defaultScript)
{
this.defaultScript = defaultScript;
}
}
} }
public abstract class RScriptInjectVariable public abstract class RScriptInjectVariableGenerater
{ {
public string RScriptString { get; private set; } public string RScriptString { get; private set; }
@@ -59,18 +69,19 @@ namespace Convention.RScript.Variable
private Generater MyGenerater; private Generater MyGenerater;
public readonly static Dictionary<string, RScriptInjectVariable> AllRScriptInjectVariables = new(); public readonly static Dictionary<string, RScriptInjectVariableGenerater> AllRScriptInjectVariables = new();
public readonly Type targetType; public readonly Type targetType;
public readonly string name; public readonly string name;
public readonly string script; public readonly string scriptIndicator;
public readonly string defaultScript;
public object Generate() public object Generate()
{ {
return MyGenerater(); return MyGenerater();
} }
public RScriptInjectVariable(Type targetType, [MaybeNull] Generater generater, string name) public RScriptInjectVariableGenerater(Type targetType, [MaybeNull] Generater generater, string name)
{ {
if (AllRScriptInjectVariables.TryGetValue(name, out var exist_var)) if (AllRScriptInjectVariables.TryGetValue(name, out var exist_var))
{ {
@@ -80,7 +91,9 @@ namespace Convention.RScript.Variable
} }
this.targetType = exist_var.targetType; this.targetType = exist_var.targetType;
this.name = exist_var.name; this.name = exist_var.name;
this.script = exist_var.script; this.scriptIndicator = exist_var.scriptIndicator;
this.defaultScript = exist_var.defaultScript;
} }
else else
{ {
@@ -125,12 +138,14 @@ namespace Convention.RScript.Variable
builder.AppendLine(this.WriteClassBodyExit(targetType)); builder.AppendLine(this.WriteClassBodyExit(targetType));
builder.AppendLine(this.WriteClassTail(targetType)); builder.AppendLine(this.WriteClassTail(targetType));
builder.AppendLine(this.WritePageEnd(targetType)); builder.AppendLine(this.WritePageEnd(targetType));
this.script = builder.ToString(); this.scriptIndicator = builder.ToString();
} }
this.targetType = targetType; this.targetType = targetType;
this.MyGenerater = generater; this.MyGenerater = generater;
this.name = name; this.name = name;
var defaultAttr = targetType.GetCustomAttribute<Attr.DefaultAttribute>();
this.defaultScript = defaultAttr?.defaultScript;
} }
public static object GenerateRScriptVariable(string name) public static object GenerateRScriptVariable(string name)
@@ -154,7 +169,7 @@ namespace Convention.RScript.Variable
{ {
public static object New(string name) public static object New(string name)
{ {
return RScriptInjectVariable.GenerateRScriptVariable(name); return RScriptInjectVariableGenerater.GenerateRScriptVariable(name);
} }
} }
} }