对不起,我不确定这是否有意义,或者标题是否有意义。
所以我写了很多类库,它们可以用于各种各样的原因,很明显,这取决于我们要创建什么,这将决定我们是否需要创建一个类的引用。
有一点需要注意的是,我们希望把事情分开,因此有了这篇文章。在一个共享类的项目中,让我们说Letters,在那里我们有一个枚举
public enum enum1
{
A,
B,
C
}
在另一个类库(我们称之为Words)中,我们正在做一些使用enum1的事情,所以我们将引用项目Letters(dll)。现在我正在尝试做的是,当我们想要使用Words时,避免必须引用Letters。当引用words时,我实际上想要到达enums1。例如
Words - referencing Letters
public Enum Characters {get { return Letters.enum1; } }
Letters
public enum enum1{
A, B, C
}
App - Only reference Words
Words.Characters.
and then the list of A, B, C
我知道我可以改变
public Enum Characters {get { return Letters.enum1; } }
到
public Words.enum1 Characters {get; }
但这将意味着在我的应用程序中,我需要同时引用单词和字母,理想情况下我不想这样,因为有人可以引用根本不需要字母的单词。
这是否可能,又如何做到。
谢谢
2条答案
按热度按时间bqujaahr1#
如果使用场景为:
enum1
)。letters.dll
永远不会引用words.dll
,反之亦然)。app.exe
决不能同时引用letters.dll
和words.dll
)。则可能的解决方案是使用“共享项目”。
在Visual Studio中创建新项目时,筛选C#并搜索
shared
。共享项目实际上并不产生输出,但是其他引用该共享项目的项目将包含该共享项目的源文件,换句话说,
enum1
将有一个源文件;源文件将在共享项目中;并且通过引用共享项目,letters
和words
将具有相同的enum1
类型。但是,由于它是同一命名空间中的同一类型,因此如果
app
尝试同时引用letters
和words
,则会出现错误,因为两个程序集中存在同一类型。ulydmbyx2#
如果您希望避免在App项目中直接引用Letters项目,则可以在Words项目中定义enum1枚举的副本,并手动将值从原始enum1Map到enum1的新副本。这是非常不必要的,也是浪费精力的,并且可能没有达到您想要的效果。如果您不太满意,请提出明确的改进请求。
信件:
文字:
应用程序: