【问题标题】:How to instantiate an object in Powershell which must derive from a .Net abstract class如何在 Powershell 中实例化必须从 .Net 抽象类派生的对象
【发布时间】:2012-01-08 21:05:09
【问题描述】:

我想使用 Powershell 将实体插入 Azure 表存储,因此需要实例化一个派生自 .NET 的类abstract班级Microsoft.WindowsAzure.StorageClient.TableServiceEntity

我正在考虑使用例如 New-Object 实例化(在 Powershell 2.0 脚本中)对象,然后使用 Add-Member 添加成员,但无法实现兼容 TableServiceEntity 派生类的实例化。 (我可以实例化其他任意 PSObject,但他们似乎不会这样做)

或者,如果有人可以告诉我如何实例化和填充 ANY 对象类,然后可以将其传递给 tableServiceContext.AddObject() 方法

【问题讨论】:

  • 您能否更具体一些并给我们发一些代码示例,包括您引用程序集的部分

标签: powershell azure azure-storage


【解决方案1】:

你可以做的是在一个cs文件中创建你的类,然后将它引用到你的脚本中。 这是示例: 将此保存为cs文件:

using System.Collections;
    public  class MyList : System.Collections.Generic.List<string>
    {
        public static string Test(string input)
        {
            return string.Format("test input {0}", input);
        }
    }

这是运行它的代码:

cd c:\pst
Add-Type -Path "2.cs" #-ReferencedAssemblies $assembly
[MyList]::Test("aaa")

您可能需要将程序集传递给 ReferencedAssemblies 。而且您可能还需要将程序集上传到您的脚本中

这里描述了创建表的方式: Add or replace entity in Azure Table Storage

【讨论】:

  • 好主意,但没有 Powershell 唯一的方法吗?
  • 如果您发现 C# 代码完全符合您的要求 - 可以将其重写为 PowerShell。编辑您的主要帖子,人们会帮助您。
  • 谢谢。这有帮助并被证明是解决方案的种子。我最后所做的是使用带有 -TypeDefinition 参数的 Add-Type 来指定一个简单的从抽象 .NET 基类继承的短类定义(在这个case TableServiceEntity),现在有一个独立的 Powershell 脚本工作
  • 是的,我接受它,bt 没有投票的分数。非常感谢您的快速回复。
猜你喜欢
  • 1970-01-01
  • 2015-03-23
  • 2021-11-24
  • 1970-01-01
  • 2014-04-17
  • 2017-04-28
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多