如何使用 IEnumerable<> 创建 CodeFunction2类型?
我真的需要创建类似下面的东西,我正在构建2个类,第一个是一个名称为 tableNameAsSingular (即 AddressEntity) 的类,在我的第二个工作类中,我需要有类似下面的东西
public IEnumerable<AddressEntity> GetAddressEntity()
{
// the good stuff...
}
创建函数时我有以下..
Type t = Type.GetType("IEnumerable<" + tableNameAsSingular + ">");
CodeFunction2 finderFunction = (CodeFunction2)entityServiceClass.AddFunction("Get" + table.Name, vsCMFunction.vsCMFunctionFunction, t, -1, vsCMAccess.vsCMAccessPublic, null);
但 t 始终为 null
当我执行 Type.GetType(tableNameAsSingular)
时,它也返回 null
任何帮助或指针都会受到热烈欢迎。另外,如果有人知道大量的 EnvDTE 代码生成知识在哪里,我将非常感激!
更新
我现在已经使用以下内容尝试将其作为字符串使用:
public void AddFinderMethod()
{
string t = "IEnumerable<" + tableNameAsSingular + ">";
CodeFunction2 finderFunction = (CodeFunction2)entityServiceClass.AddFunction("Get" + table.Name, vsCMFunction.vsCMFunctionFunction, t, -1, vsCMAccess.vsCMAccessPublic, null);
// Code here remove as it does not get this far yet.
}
但我在 AddFunction 方法中收到“IEnumerable
”错误消息
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
语法
IEnumerable
是 C# 语法,而不是 .NET 语法(使用反引号、计数器等)。您的意思是:请注意,
Assembly.GetType
通常是更好的选择,因为您可以只使用命名空间限定的名称:The syntax
IEnumerable<T>
is C# syntax, not .NET syntax (which uses back-ticks, counters, etc). What you mean is:Note that
Assembly.GetType
is usually a better choice, as you can just use namespace-qualified names:已成功使其与以下内容一起工作:
have managed to get it working with the following: