簡體   English   中英

Windows Workflow Foundation-在工作流中的不同活動之間傳遞自定義變量

[英]windows Workflow foundation - passing custom variable between different activity in a workflow

我正在將自定義變量類型從一個動作傳遞到工作流中的另一個動作。 這是自定義對象的定義

       public class ConfigDatabase
        {
            public string Name;
            public string Host;
            public string Port;
            public string Instance;
            public string User;
            public string Password;
        }

        public class ConfigDatabases
        {
            public string DatabaseToUse;
            public List<ConfigDatabase> DatabaseList;

            public ConfigDatabases()
            {
                DatabaseList = new List<ConfigDatabase>();
            }
        }

        public class ConfigEnvironment
        {
            public ConfigDatabases EnvironmentConfigDatabase;

            public ConfigEnvironment()
            {
                EnvironmentConfigDatabase = new ConfigDatabases();
            }

            public ConfigDatabase ReturnDatabaseInfo()
            {
                ConfigDatabase ConfigDatabaseInfo = new ConfigDatabase();
                for (int Count1 = 0; Count1 < EnvironmentConfigDatabase.DatabaseList.Count; Count1++)
                {
                    if (EnvironmentConfigDatabase.DatabaseList[Count1].Name == EnvironmentConfigDatabase.DatabaseToUse)
                    {
                        ConfigDatabaseInfo = EnvironmentConfigDatabase.DatabaseList[Count1];
                        return ConfigDatabaseInfo;
                    }
                }
                return ConfigDatabaseInfo;
            }

            public string GetDatabaseConnectionString()
            {
                ConfigDatabase DatabaseInfo = ReturnDatabaseInfo();
                string ConnectionString = "Data Source=(description=(address=(protocol=tcp)(host=" + DatabaseInfo.Host + ")(port=" + DatabaseInfo.Port + "))(connect_data=(sid=" + DatabaseInfo.Instance + ")));User ID=" + DatabaseInfo.User + ";Password=" + DatabaseInfo.Password + ";";
                return ConnectionString;
            }
        }

在操作的第一步期間,它將運行以下代碼以從文件加載配置數據,並將其存儲在函數Exec​​ute中返回的對象(ConfigEnvironment)中。

public sealed class InitializeEnvironment : CodeActivity<ConfigEnvironment>
{
    // Define an activity input argument of type string
    public InArgument<string> EnvironmentFileLocation { get; set; }

    // If your activity returns a value, derive from CodeActivity<TResult>
    // and return the value from the Execute method.
    protected override ConfigEnvironment Execute(CodeActivityContext context)
    {
        // Obtain the runtime value of the Text input argument
        string EnvironmentFile = context.GetValue(this.EnvironmentFileLocation);
        EnvironmentConfigInitialization EnvironmentInitialize = new EnvironmentConfigInitialization(EnvironmentFile);
        ConfigEnvironment EnvironmentDetail = EnvironmentInitialize.LoadData();
        return EnvironmentDetail;
    }
}

在工作流的后續活動中,我想獲取存儲在該對象中的數據。 但是,以下代碼將出現編譯錯誤,因為EnvironmentDetail對象找不到函數GetDatabaseConnectionString。

public sealed class ExecuteSQL : CodeActivity<DataRowCollection>
{
    // Define an activity input argument of type string
    public InArgument<string> SQLScript { get; set; }
    public InArgument<ConfigEnvironment> EnvironmentDetail { get; set; }

    // If your activity returns a value, derive from CodeActivity<TResult>
    // and return the value from the Execute method.
    protected override DataRowCollection Execute(CodeActivityContext context)
    {

        string connectionString4 = EnvironmentDetail.GetDatabaseConnectionString(); //This create a compile error

}

}

編譯警告為以下“ System.Activities.InArgument”不包含“ GetDatabaseConnectionString”的定義,並且找不到擴展方法“ GetDatabaseConnectionString”接受類型為“ System.Activities.InArgument”的第一個參數(您是否缺少使用指令還是程序集引用?)

事實證明, EnvironmentDetail的類型為InArgument (或InArgument<ConfigEnvironment> ),但不是ConfigEnvironment類型。您需要執行context.Get<ConfigEnvironment>()以獲取ConfigEnvironment類型的變量。

讓我知道這是否解決了您的問題,或者還有其他問題;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM