gpt4 book ai didi

c# - 确定模型的属性是不可空的还是必需的(在 MVCScaffolding T4 模板文件中)

转载 作者:行者123 更新时间:2023-11-30 12:13:20 24 4
gpt4 key购买 nike

我想编写一个方法来获取 T4 模板文件中属性的可空状态。

我已经在我的 TT 文件中写了它,但在 T4 文件中它是不同的

bool IsRequired(object property) {
bool result=false;

? ? ? ? ? ? ? ? ? ? ? ?

return result;
}

List<ModelProperty> GetEligibleProperties(EnvDTE.CodeType typeInfo, bool includeUnbindableProperties) {
List<ModelProperty> results = new List<ModelProperty>();
if (typeInfo != null) {
foreach (var prop in typeInfo.VisibleMembers().OfType<EnvDTE.CodeProperty>()) {
if (prop.IsReadable() && !prop.HasIndexParameters() && (includeUnbindableProperties || IsBindableType(prop.Type))) {
results.Add(new ModelProperty {
Name = prop.Name,
ValueExpression = "Model." + prop.Name,
Type = prop.Type,
IsPrimaryKey = Model.PrimaryKeyName == prop.Name,
IsForeignKey = ParentRelations.Any(x => x.RelationProperty == prop),
IsReadOnly = !prop.IsWriteable(),

// I Added this >>
IsRequired = IsRequired(prop)
});
}
}
}

怎么做到的???

最佳答案

一年后我在同样的问题上苦苦挣扎,我发现了你的问题。我不认为这可能以一种简单的方式进行,因为您必须将 CodeTypeRef 转移到 Systemtype。这是一个很好的 hack,适用于模型和 mvcscaffolding:

bool IsNullable(EnvDTE.CodeTypeRef propType) {
return propType.AsFullName.Contains(".Nullable<");
}

你应该这样调用这个函数:

               // I Added this >>
// IsRequired = IsRequired(prop)
IsRequired = !IsNullable(prop.Type);
});

关于c# - 确定模型的属性是不可空的还是必需的(在 MVCScaffolding T4 模板文件中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com