gpt4 book ai didi

.net - Mono 上的 MEF 无法正常工作?

转载 作者:行者123 更新时间:2023-12-02 07:56:54 24 4
gpt4 key购买 nike

我制作了一个在 .NET 上运行的非常简单的 MEF 示例,但在 Mono 上无法正常工作。

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.Composition;

namespace Vialis
{
class Program
{
[Import(typeof(ILedController))]
public List<ILedController> Controllers
{
get;
set;
}

static void Main(string[] args)
{
new Program();
}

public Program()
{
compose();
selectController();

Console.ReadLine();
}

private void compose()
{
var catalog = new DirectoryPartCatalog("controllers");
var container = new CompositionContainer(catalog);

container.AddPart(this);
container.Compose();
}

private void selectController()
{
Console.Clear();
Console.WriteLine("Please select the controller to use\n");

byte i = 0;

foreach (var controller in Controllers)
{
Console.WriteLine("\t{0}) {1}", i, controller.ToString());
i++;
}

Console.Write("\nYour selection: ");
var input = Convert.ToInt32(Console.ReadLine());

Controllers[input].DisplayText(10, 10, "Hello World");
}
}
}

这是界面:

using System;
using System.Collections.Generic;
using System.Text;

namespace Vialis
{
public interface ILedController
{
void DisplayText(int x, int y, string text);
}
}

这是第一个实现:

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.Composition;

namespace Vialis
{
[Export(typeof(ILedController))]
public class LyanController : ILedController
{
public void DisplayText(int x, int y, string text)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(text);
}
}
}

第二种实现方式:

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.Composition;

namespace Vialis
{
[Export(typeof(ILedController))]
public class VialisController : ILedController
{
public void DisplayText(int x, int y, string text)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(text);
}

}
}

这是 .NET (Windows) 上发生的情况:

.NET http://lh5.ggpht.com/_GWubgra2SwM/SXl-yoSRLtI/AAAAAAAADwI/sGR0FjLfg8Q/controller-selection-windows.jpg

选择 Controller :

.NET 1 http://lh3.ggpht.com/_GWubgra2SwM/SXl-yYzs-aI/AAAAAAAADwE/WomfaQqv_Xc/vialis-controller-windows.jpg

.NET 2 http://lh6.ggpht.com/_GWubgra2SwM/SXl-yE1Q-cI/AAAAAAAADwA/qznnEkiNokA/lyan-controller-windows.jpg

但是使用 Mono 2.2 程序集不会加载:

Mono http://lh5.ggpht.com/_GWubgra2SwM/SXl-xw0YXOI/AAAAAAAADv8/7j2UxJott04/controller-selection-macos.jpg

有什么建议吗?

信息:Google 似乎遇到了一些 picasa 网络问题, 这就是图像无法加载的原因。

图片显示在 Mac OS 上,没有列出任何 Controller 。

最佳答案

使用最新的 MEF 版本(预览版 4 - http://www.codeplex.com/MEF),它工作得很好!

由于错误不再相关,我投票决定关闭此问题。

关于.net - Mono 上的 MEF 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472275/

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